【学習ログ】Ruby on Railsでの各種実装&Devise導入チャレンジ

プログラミング技術ブログ

はじめに

おはようございます!今日は朝からRuby on Railsの学習を進め、主に以下のトピックに取り組みました。

  • each や map を使った繰り返し処理
  • ハッシュの操作(追加・削除・更新、ネストしたハッシュ)
  • Rails環境構築とトップページ作成
  • Devise を使ったログイン機能の導入

一通りやってみたものの、思った以上にエラーにハマり、少し苦戦した部分もありました。今回はその学習の流れやつまずき、そして得られた気づきをまとめます。


1. 朝イチの目標設定

  • 05:30 – 06:30
    each メソッドを使った繰り返し処理を実装。
    配列やハッシュを each でループしながらデータ操作を復習。
  • 07:30 – 09:00
    ハッシュの基本操作を実践。
    値の追加・削除・更新、条件抽出(selectreject)、ネストしたハッシュへのアクセスを学習。
  • 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. つまずきポイント & 対処法

  1. CSSが反映されない
    • application.scss と custom.scss の設定やファイル名の拡張子に注意。
    • @import "custom"; を書く場所や application.css を application.scss にリネームする作業を忘れがち。
  2. Deviseのルートが表示されない
    • devise_for :users を routes.rb に書いているのに、rails routes に反映されない。
    • 原因としては Railsの再起動忘れGemのインストールやマイグレーションが不十分 などが考えられる。
  3. サーバーが起動中のポート競合
    • A server is already running のエラーが出たときは、kill -9 <PID> や rm tmp/pids/server.pidでプロセスを強制終了。

4. 得られた学び

  1. 問題の切り分けが大事
    • 「ルーティングが悪いのか?Gemが悪いのか?ファイル名か?」といったポイントを1つずつチェックする。
  2. SCSS と CSS の拡張子の違い
    • Railsのアセットパイプラインでは、.scss を使うなら application.scss にリネームする必要がある。
  3. Gemfile の更新後は bundle install を忘れずに
    • Deviseなど、新しくGemを入れたら必ず bundle install

5. まとめ & 明日への方針

午前中の学習は 「基礎文法のおさらい」 と 「ログイン機能の導入」 を進めたものの、想定外のエラーに手こずりました。
特に Deviseのルートが生成されない問題 は午後まで持ち越しになりそうです。

明日の目標

  • Deviseルート問題の解決
    • rails routes | grep users でルートが出るようにする
    • /users/sign_in にアクセスしてログイン画面が出る状態に
  • CSSの微調整
    • もう少しBootstrapやSCSSでデザインを整えたい
  • 各機能の完成度を高める
    • トップページを整えて、アプリらしく仕上げる

あとがき

苦戦したものの、エラーと向き合った分だけ理解も深まりました。
今後は 「エラーが出ても、どこを疑えばいいのか?」 を冷静に探れるようにしたいです。

同じようにログイン機能でつまずいている方がいれば、ぜひコメントやSNSで情報交換しましょう!
それでは明日もコツコツ頑張ります!

コメント

タイトルとURLをコピーしました