はじめに
おはようございます!今日は朝からRuby on Railsの学習を進め、主に以下のトピックに取り組みました。
eachやmapを使った繰り返し処理- ハッシュの操作(追加・削除・更新、ネストしたハッシュ)
- Rails環境構築とトップページ作成
- Devise を使ったログイン機能の導入
一通りやってみたものの、思った以上にエラーにハマり、少し苦戦した部分もありました。今回はその学習の流れやつまずき、そして得られた気づきをまとめます。
1. 朝イチの目標設定
- 05:30 – 06:30
eachメソッドを使った繰り返し処理を実装。
配列やハッシュをeachでループしながらデータ操作を復習。 - 07:30 – 09:00
ハッシュの基本操作を実践。
値の追加・削除・更新、条件抽出(select,reject)、ネストしたハッシュへのアクセスを学習。 - 10:00 – 12:00
ログイン機能の概要を理解(Deviseの調査)。
RailsプロジェクトのセットアップやGemの導入を確認。
この時点では「Deviseを使えば楽勝でログイン機能がつくれる」と思っていたのですが、午後にかけてだいぶ苦戦しました…。
2. 取り組んだ内容
(1) each・map を使った繰り返し処理
- 配列やハッシュを
eachでループして表示する課題を解きました。 mapは「変換後の配列を返す」という違いがあり、コードがスッキリする場面もあることを実感。
rubyコピーする編集するnumbers = [1, 2, 3]
# each
numbers.each { |n| puts n * 2 }
# map
double_numbers = numbers.map { |n| n * 2 }
p double_numbers
(2) ハッシュの操作
- ハッシュに値を追加・更新・削除する方法を復習。
selectやrejectで条件に合うデータだけを取り出すことができるのが便利!- ネストしたハッシュ(ハッシュの中にハッシュ)も、
students[name][:math]のようにアクセスできるとわかってスッキリ。
rubyコピーする編集するstudents = {
"田中" => { math: 80, english: 70 },
"佐藤" => { math: 95, english: 85 },
}
students["鈴木"] = { math: 60, english: 75 } # 追加
(3) Rails環境構築 & トップページ作成
rails new myappで新規アプリを作成。bin/rails db:create→rails sで起動し、ブラウザでlocalhost:3000を確認。rails g controller home index&root to: "home#index"でトップページを作り、簡単なデザインをcustom.scssで当てようとするも、CSSの反映に苦戦。
(4) Devise を使ったログイン機能導入
gem 'devise'をGemfileに追記 →bundle install→rails generate devise:installrails generate devise User→rails db:migrate- しかし、
/users/sign_inへアクセスするとNo route matches [GET] "/users/sign_in"のエラーに…。 devise_for :usersがroutes.rbに書いてあるのにルートが反映されず、rails routes | grep usersで何も表示されない状況に。- 原因不明のルート設定トラブルで足止めを食らい、ログイン画面を拝めずに午前の学習時間が終了。
3. つまずきポイント & 対処法
- CSSが反映されない
application.scssとcustom.scssの設定やファイル名の拡張子に注意。@import "custom";を書く場所やapplication.cssをapplication.scssにリネームする作業を忘れがち。
- Deviseのルートが表示されない
devise_for :usersをroutes.rbに書いているのに、rails routesに反映されない。- 原因としては Railsの再起動忘れ、Gemのインストールやマイグレーションが不十分 などが考えられる。
- サーバーが起動中のポート競合
A server is already runningのエラーが出たときは、kill -9 <PID>やrm tmp/pids/server.pidでプロセスを強制終了。
4. 得られた学び
- 問題の切り分けが大事
- 「ルーティングが悪いのか?Gemが悪いのか?ファイル名か?」といったポイントを1つずつチェックする。
- SCSS と CSS の拡張子の違い
- Railsのアセットパイプラインでは、
.scssを使うならapplication.scssにリネームする必要がある。
- Railsのアセットパイプラインでは、
- Gemfile の更新後は
bundle installを忘れずに- Deviseなど、新しくGemを入れたら必ず
bundle install。
- Deviseなど、新しくGemを入れたら必ず
5. まとめ & 明日への方針
午前中の学習は 「基礎文法のおさらい」 と 「ログイン機能の導入」 を進めたものの、想定外のエラーに手こずりました。
特に Deviseのルートが生成されない問題 は午後まで持ち越しになりそうです。
明日の目標
- Deviseルート問題の解決
rails routes | grep usersでルートが出るようにする/users/sign_inにアクセスしてログイン画面が出る状態に
- CSSの微調整
- もう少しBootstrapやSCSSでデザインを整えたい
- 各機能の完成度を高める
- トップページを整えて、アプリらしく仕上げる
あとがき
苦戦したものの、エラーと向き合った分だけ理解も深まりました。
今後は 「エラーが出ても、どこを疑えばいいのか?」 を冷静に探れるようにしたいです。
同じようにログイン機能でつまずいている方がいれば、ぜひコメントやSNSで情報交換しましょう!
それでは明日もコツコツ頑張ります!


コメント