はじめに
おはようございます!今日は朝から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:install
rails 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で情報交換しましょう!
それでは明日もコツコツ頑張ります!
コメント