Ruby関連のことを調べてみた

Ruby関連のことを調べてみた

namespaceとは

# Namespace
Namespaceと検索すると名前空間という言葉が出てきた。
### 名前空間とは?
p265
>クラス名の予期せぬ衝突を防ぐ`「名前空間(ネームスペース)」`を作る場合によく使われます。たし、`名前空間を作る場合はクラスよりもモジュールが使われることが多い`です。名前空間やモジュールについては第8章で説明します。
* 名前空間とnamespaceは同じのようだ。
* 名前空間はクラスよりもモジュールが使われることが多いです。

# 名前空間を分けて名前の衝突を防ぐ
> 自分だけ使う小さなプログラムを書いているうちはあまり問題になりませんが、大規模なプログラム>や外部に公開するライブラリを作ったりするときはクラス名の重複が問題になることがあります。例えば、ある人が「野球の二塁手」という意味でSecondクラスを定義したとします。
>“`rb
>class Second
> def initialize(player, uniform_number)
> @player = player
> @uniform_number = uniform_nu

元記事を表示

Ruby on Railsの課題の取り組み方(RUNTEQの課題を通して学んだ課題の取り組み方について)

Hello!しっしーです🦁

僕は、現在RUNTEQというプログラミングスクールに通い、
Ruby on Railsを使ってWebアプリ開発の技術習得を目指しています!

そして、現在は5ヶ月目に突入!
総学習時間はざっくり800時間くらいになります。
(※独学時の学習時間も含むHTML、CSS、JSがメイン)

そんな僕が、現在どのように課題と向き合い、
どのように問題解決をしているのかをまとめてお話しすることで、

これから学習をしていく方の参考になるのではないか?と思い!

現在の課題の取り組み方をまとめておきたいと思います。

## 目次:

– [Ruby on Railsの課題に取り組む時の心構え](#ruby-on-railsの課題に取り組む時の心構え)
– [Railsの課題の進め方](#railsの課題の進め方)
– [まとめ](#まとめ)

## Ruby on Railsの課題に取り組む時の心構え

まず、課題に対する心構えについてお話しします。
当然ですが、ある程度学習を進めているとはいえ、
僕は全くの🔰初心者です。

なので、何もわかりません笑

なので、ち

元記事を表示

【Ruby】sortとsort_byの違い

# はじめに
こんにちは!アメリカの大学で語学を学びながら、独学でソフトウェアエンジニアを目指している者です。
本日は`sort`と`sort_by`の違いについて解説していきたいと思います。
Rubyを勉強しているうえでsortかsort_byどちらを使うかわからない方もいると思いますが、それぞれ使う場面やパフォーマンスが違います。
それぞれ見ていきましょう

# `sort`メソッドの特徴
`sort`メソッドは、配列やリストのすべての要素を昇順に並べ替えた新しい配列を返します。
デフォルトでは <=> 演算子を使って比較を行いますが、ブロックを渡すことでカスタムのソート条件も指定できます。
`sort`の特徴は以下の通りです

* デフォルトのソート順
<=> 演算子での比較に基づき、昇順にソートされます。
* カスタムのソート条件
ブロックを渡すと、そのブロックの評価結果に従ってソートされます。
* 安定性
sortメソッドは「安定なソート」ではないため、同じ値の要素の順序が保証されません。
“`ruby
numbers = [5, 3, 8, 1]
# 昇順ソート
sort

元記事を表示

ユーザー登録機能で誕生日の年月日を一覧表示して選択する 【備忘録】

## はじめに
新規ユーザー登録で誕生日を入力することはよくあると思うので記録残しておきます。
“`new.html.erb

<%= f.label :birthday, "誕生日" %>
<%= f.date_select :birthday, use_month_numbers: true, start_year: 1930, end_year: (Time.now.year - 5), field_order: [:year, :month, :day], prompt: { year: '--', month: '--', day: '--' }, date_separator: '' %>

元記事を表示

【Ruby】%記法のまとめ

# はじめに
こんにちは!アメリカの大学で語学を学びながら、独学でソフトウェアエンジニアを目指している者です。
現在たのしいRubyという教材を使用してArrayクラスについて学んでいますが、その中で%記法(%wと&i)を習いました。
もしかしたら、これら以外にも%記法があるのでは?と思い調べたのがこの記事を書こうと思ったきっかけです。
では、%記法について解説します。

## `%q` と `%Q`(文字列)
* `%q`:シングルクォート(’)と同じ扱いで、特殊文字や変数展開が無効です。
* `%Q`:ダブルクォート(”)と同じ扱いで、特殊文字や変数展開が有効です。
“`ruby
name = “Ruby”
puts %q(Hello\nworld) # => Hello\nworld(特殊文字はそのまま)
puts %Q(Hello #{name}) # => Hello Ruby(変数展開が有効)
“`

## `%w` と `%W`(文字列の配列)
* `%w`:スペース区切りで文字列の配列を生成します。変数展開や特殊文字は解釈されません。
* `%W`:ダブルクォー

元記事を表示

macOS利用の初心者Rubyプログラマは要確認!9つの開発環境チェックポイント

## はじめに:これは何?

僕は[フィヨルドブートキャンプ](https://bootcamp.fjord.jp/)でメンターをやっています。
これまでたくさんの生徒さんたちを見てきましたが、まあまあの頻度で「開発環境がおかしくて、不思議なトラブルに巻き込まれるケース」を見てきました。

具体的には「Appleチップなのに、間違ってIntel版のセットアップを行っているケース」です。
特にプログラミング初心者の人はネットの記事を見よう見まねでセットアップするので、本人も知らないうちにおかしなセットアップをしていることがあります。

この状態だと「ある程度は正常に動くが、どこかで謎なトラブルに巻き込まれて無限に時間を溶かしてしまう」という問題が発生しやすいです。

そこで、この記事ではmacOSでRubyを動かしているプログラミング初心者の方を対象に、開発環境のチェックポイントを9つ紹介します。

「AppleチップとかIntelとか、今まで全然気にしたことがなかった」という人は、特に危険かもしれません。
問題がなければ10分程度で終わるので、ぜひ最初から順にチェックしていってくださ

元記事を表示

ユーザー設定(devise)駆け足説明 【備忘録】

## はじめに
サイトを作る際に新規登録、ログイン、ログアウトのユーザー設定は必ず行うものなので詳細は省きとりあえず設定できるよう駆け足で説明。

1.Gemfileの最後の行に以下を入力
“`Gemfile
gem ‘devise’
“`
2.ターミナルに順番に入力
“`
% pwd  # 現在のディレクトリが作成中のアプリ名であることを確認して
% bundle install # Gemをインストール
% rails s # サーバー再起動
% rails g devise:install # deviseファイル作成
% rails g devise user # deviseコマンドでUserモデルを作成
“`
これでユーザー関連のモデルやマイグレーションも自動で生成してくれて
以下のようにroutes.rbにルーティング追記されている。
“`config/routes.rb
Rails.application.routes.draw do
devise_for :us

元記事を表示

【Ruby on Rails】renderとredirect_to

renderを勘違いしていたので整理。
## renderメソッド
renderメソッドは、呼び出すビューファイルを指定することができる。
“`ruby:例
render :edit
“`
コントローラー内で使用するメソッドだが、処理がうまくいかなかったときに、元のページに戻る処理で使われることが多い。
理由は、元のページのデータをそのまま保持することができるため。

## redirect_toメソッド
redirect_toメソッドは、指定のurlへ遷移するようリクエストを送信している。
コントローラー内で使用し、pathやURLを指定する。
“`ruby:例
redirect_to root_path
“`
renderがビューファイルを指定しているのに対して、redirect_toは再度ルーティングを通してコントローラーで処理が行われている。

## renderメソッドでのビュー再表示
renderメソッドは便利で、フォームでの入力ミスがあった時でも、元のページに戻り、かつ入力値が残ったままになる。
しかし、ビュー内で他のコントローラーに定義されているインスタンス変数

元記事を表示

Lightsailで立ち上げたRedmineのadminユーザーのpassを忘れてしまった

## 経緯
タスク管理ツールとしてRedmineを利用していて
急にadminユーザーとしてログインができなくなった際に焦ったので
同じ過ちを犯さないためにメモ

## Redmineとは
RedmineとはそもそもRailsによって作成されたタスク管理ツールです。
ここを理解していると焦らず対応することができる

## やったこと
Lightsailサーバのコマンドプロンプトから、もしくはssh可能であれば自身のターミナルからsshしてアクセスをする。

1. Redmineのインストールディレクトリに移動
例:
“`
cd /var/lib/redmine
“`
わからなければ
“`
sudo find / -name “config.ru” 2>/dev/null
“`

2.Railsのコンソールを開く
“`
bundle exec rails console -e production
“`

3.ユーザーのlogin 属性を出力
“`
User.all.each { |user| puts user.login }
“`
ここでadmin: trueと記載さ

元記事を表示

Tailwind CSSでレスポンシブが効かない!! ビューポートメタタグ

Tailwind CSSを使ってレスポンシブデザインを作成しているのに、画面サイズを変えてもデザインが変更されない!!
### その原因は、**ビューポートメタタグ**がないことでした!!

## ビューポートメタタグとは?

ビューポートメタタグは、ブラウザに「どのように画面サイズを扱うべきか」を指示するものです。このタグがないと、ブラウザはデスクトップ向けのサイズを基準にしてしまい、スマホやタブレットでの表示が崩れることがあります。

### 必要なタグ
以下のコードをHTMLの``内に追加しましょう。

“`html

“`

これで、ブラウザがデバイスの画面幅に合わせてページを適切に表示するようになります。

## このタグの役割

1. **`width=device-width`**
デバイスの画面幅をそのままビューポートの幅として使用します。これにより、ページが画面に収まり、横スクロールが発生しにくくなりま

元記事を表示

【Ruby】エラーハンドリングのまとめ

# はじめに
こんにちは!アメリカの大学で語学を学びながら、独学でソフトウェアエンジニアを目指している者です。
本日はRubyのエラーハンドリングについてまとめていきたいと思います。

プログラムを書く際、エラーが発生するのは避けられません。
エラーハンドリングを適切に行うことで、プログラムが予期しないクラッシュを回避し、ユーザーに分かりやすいメッセージを表示するなど、より安定したコードが実現できます。
Rubyのエラーハンドリングの基本を具体例を交えながら見ていきましょう。

# エラーハンドリングが必要な理由
Rubyはエラーが発生した際に原因を知らせてくれますが、それでもエラーハンドリングが重要な理由を以下のポイントに分けて解説します。

### 1. エラー発生時のカスタムメッセージの表示やログの記録
`rescue`を使うと、エラーの種類に応じてカスタムメッセージを表示したり、エラー内容をログファイルに保存できます。
特にユーザーが利用するアプリケーションでは、ユーザーに理解しやすいメッセージを表示することで、エラー内容を適切に伝えることができます。
“`ruby
begi

元記事を表示

RailsでURLのidのハッシュ化のやり方完全入門(初心者向け)

# ハッシュ化とは

ハッシュ化とは,ハッシュ化したい文字や数字をハッシュ関数という関数にかけるとハッシュ化された値がかえってくる.そのハッシュ化された値からは元の値を求めることはできないというものである.

# ハッシュ化するメリット
ハッシュ化された値からもとの値を求めることはできないため
セキュリティ対策に効果がある.URLのidはハッシュ化するべきであり,
**できていないととても危険!!!**

# やり方
# ①まずhashidsというパッケージをインストールする.
“Gemfile“にパッケージを記述する.
“`
gem ‘hashids’
“`
上のコードを“Gemfile“に書いく.
次にターミナルでhashidsをインストールする.
“`
bundle install
“`
これでhashidsのインストールは完了である.

# ② ハッシュidの初期化
初期化をすることでセキュリティが向上する.
“application_controller.rb“にハッシュidを初期化するコードを書く.
“”your_salt”“には好きな文字列を入れる

元記事を表示

VsCode / Cursor + Rubocop ( ruby-rubocop-revived ) でRubyファイルの保存が非常に重い

# 問題

ファイルによっては、Rubyファイル保存がすごく重い場合がある。

`.vscode/settings.json` の設定は以下のようにしていた。

“`json
{
“editor.codeActionsOnSave”: {
“source.fixAll”: “explicit”
},
“[ruby]”: {
“editor.defaultFormatter”: “LoranKloeze.ruby-rubocop-revived”,
}
}
“`

# 解決

`editor.codeActionsOnSave` の項目を削除することで解決した。

“`json
{
“[ruby]”: {
“editor.defaultFormatter”: “LoranKloeze.ruby-rubocop-revived”,
}
}
“`

この項目を削除しても、Rubocopによるフォーマットはちゃんとしてくれるようだ。

何がどう干渉していたのかは不明。

# チャットメンバー募集

何か質問、悩み事、相談などあれば

元記事を表示

collectionとmember 検索機能 【備忘録】

## はじめに
これからオリジナルアプリを作るので、付けたい機能の勉強に記録します。
まずは検索機能を付けたいので`collection`と`member`について復習していきます。

viewファイルは既に作った状態。
searchアクションのルーティングをこれから記述する段階。

“`ruby
collection do
get ‘search’
end
“`
collectionのルーティングは`id`がついていない。
“`
Prefix Verb URI Pattern
search_comments GET /comments/search(.:format) comments#search
“`
これに対してmemberは`id`がつく。
“`ruby
member do
get ‘search’
end
“`
“`
Prefix Verb URI

元記事を表示

【Ruby】シングルクオート、ダブルクオートの使い分け

# はじめに
Rubyでは文字列を作る際に、シングルクオート(’)、またはダブルクオート(”)で囲む方法が存在します。ちらっと調べると、「どちらでも良い」と書かれており、「どちらでも良い」が一番柔軟かつ困ることだなあと思ったので、調べてみようと思いました。

## 明確に異なる点
### “`\n“` 改行文字など(バックスラッシュ記法)を使用する場合
“`ruby
puts ‘りんご\nゴリラ\nらっぱ’
#=> りんご\nゴリラ\nらっぱ

puts “りんご\nゴリラ\nらっぱ”
#=> りんご
# ゴリラ
# らっぱ
“`
他にも“`\s“` 空白文字や、“`\t“` タブ文字もよく使用するが、シングルクオーテの場合そのまま文字列と見なされてしまう。

### “`#{変数}“` 式展開を使用する場合
“`ruby
name = ‘パンダ’

puts “しりとりの続きは#{name}です”
#=> しりとりの続きはパンダです

puts ‘しりとりの続きは#{name}です’
#=> しりとりの続きは#{name}です

# シングルクオーテを使

元記事を表示

RubyとElixirの兄弟船:闘魂で切り拓く技術の旅 〜素のRubyプロジェクトでrails cのようなことをしたい〜

“`elixir
defmodule FightingSpirit do
def shout do
IO.puts “元氣ですかーーーッ!!!”
IO.puts “元氣があればなんでもできる!”
IO.puts “闘魂とは己に打ち克つこと。”
IO.puts “そして闘いを通じて己の魂を磨いていく”
IO.puts “ことだと思います。”
end
end

FightingSpirit.shout()
“`

$\huge{元氣ですかーーーッ!!!}$
$\huge{元氣があればなんでもできる!}$

$\huge{闘魂とは己に打ち克つこと。}$
$\huge{そして闘いを通じて己の魂を磨いていく}$
$\huge{ことだと思います。}$

【Ruby】Random.randとRandom.newの違い

# はじめに
こんにちは!アメリカの大学で語学を学びながら、独学でソフトウェアエンジニアを目指している者です。
本日は乱数を作成するための`.rand`メソッドと`.new`メソッドの違いについて説明していきたいと思います

# `Random.rand`とは
`Random.rand`は、Rubyの`Random`クラスに定義されているクラスメソッドです。
クラスメソッドなので、インスタンスを作成することなく、Random.randと直接呼び出せます。
このメソッドを使用する場合、Rubyのグローバルな乱数生成器が使われます。
特徴としては以下の通りです
* 手軽に使える
`Random.rand`はどこからでも簡単に呼び出せます。
* グローバルな乱数生成器を使用
プログラム全体で同じグローバル乱数生成器を共有するため、何度も呼び出しても使い回されます。
* 再現性が低い
プログラムの実行ごとに異なる乱数が生成され、再現性が必要な場合には不向きです。

“`ruby
# 0から9までの乱数を生成
puts Random.rand(10)

# 1から6までの乱数を生成(サイコロの

controllerの中の before_action :set_item

## はじめに
今までスルーしてしまっていた中途半端に理解しているコードを、これを機にひとつひとつ深堀していきたいと思います。

“`
lass ItemsController < ApplicationController before_action :authenticate_user!, only: [:edit, :update, :destroy, :new] before_action :set_item, only: [:edit, :update, :show, :destroy]  before_action :move_to_index, only: [:edit, :update, :destroy] ``` 例えばこんな記述があったとする。 ``authenticate_user!``はログインログアウトを分けてくれて、``move_to_index``はトップページに戻してくれて とわかるんだけど、いまいちわからないのが``set_item``。この子はなにをしてくれるんだろう。 ## 解説 ``set_item`` メソッドの役割は、`

【Ruby】singleton_classについて

どうもこんにちは。

今回は`singleton_class`について勉強したので備忘録としてまとめます。

# singleton_class(シングルトンクラス/特異クラス)とは

**singleton_class(シングルトンクラス)** は、Rubyにおける特別なクラスで、特定のオブジェクトに固有のメソッドや変数を定義するために使用されます。

Rubyでは、すべてのオブジェクトが自身のシングルトンクラスを持っており、このクラスを通じてオブジェクトに一時的または特定の機能を追加できます。

# singleton_classの基本的な使い方

`singleton_class`は、オブジェクトのシングルトンクラスを取得するためのメソッドです。このクラスを操作することで、特定のオブジェクトに対するシングルトンメソッドやシングルトン変数を定義できます。

“`rb
object.singleton_class
“`

– `object`: シングルトンクラスを取得したいオブジェクト

“`rb:サンプルコード
obj = Object.new

# シングルトンクラスを取

【Ruby】instance_variable_getメソッドについて

どうもこんにちは。

今回はRubyの`instance_variable_get`メソッドについて、備忘録としてまとめました。

# instance_variable_getメソッドとは

`instance_variable_get`メソッドは、オブジェクトのインスタンス変数の値を取得するためのメソッドです。

Rubyでは通常、インスタンス変数はクラス内で直接アクセスすることはできず、アクセサメソッド(`attr_accessor`、`attr_reader`、`attr_writer`)を通じてアクセスします。

しかし、`instance_variable_get`を使用すると、これらのアクセサメソッドを介さずに直接インスタンス変数にアクセスできます。

# 基本的な構文

“`rb
object.instance_variable_get(:@variable_name)
“`

– `object`: インスタンス変数を持つオブジェクト
– `:@variable_name`: 取得したいインスタンス変数のシンボル。先頭に@を付ける必要があります

# instan