超初心者がRuby on Railsで詰まったところ
何とかお金をかけずにネット上の情報だけでRuby on Railsの勉強をしようとしていましたが、バージョン違いで全然使えない情報が溢れているので時間が勿体ない。
そう思って本屋へ行き、タイトルにつられてつい手に取ったたった1日で基本が身に付く! Ruby on Rails 超入門
本の環境が筆者の構築した環境と似ていたので即購入。
【筆者環境】
OS:Windows10 Home ×64
Ruby: v2.4.3-2
Rails: v5.1.5
【本の環境】
OS:Windows10 Pro
Ruby: v2.4.1
Rails: v5.1.2
しかし、それでもわずかな違いで書いてある通りに進まない…!
というところをメモ。
備忘録と同時に、同じ状況になってしまった人のお役に立てれば。
(P.016)
テキストエディターについて
本では「VS Code」というソフトを紹介していますが、筆者はそれ以前にネット情報を比較してインストールしていた「Aptana Studio3」を使用。
(P.040)
Pumaサーバーの停止について
思わず「ctrl + c」を忘れてコマンドプロンプトを閉じてしまった場合、再度コマンドプロンプトから「rails s」でサーバーを起動しようとしても、既に起動している、とエラーが表示されます。
C:\(ルート)>rails s
=> Booting Puma
=> Rails 5.1.5 application starting in development
=> Run `rails server -h` for more startup options
A server is already running. Check H:/(ルート)/tmp/pids/server.pid.
Exiting
この場合、そのエラーの下2行目に表示されているルートとserver.pidというファイルに注目。このファイルをエクスプローラーからでも削除すればOK。
(P.055)
ExecJS::ProgramErrorに遭遇した場合の対処方法について
本ではGemfileの設定にあるcoffe-railsのcoffe-script-sourceのgemバージョンを1.8.0に指定するよう書いてありますが、それを実行してもダメだったときは、「node.js」をインストールしてみてください。詳しくはコチラをご参考に。
(P.086)
データベースを事前に作成する
ここは手間取りました。本では
>rails db:create
で作成するとありますが、筆者の環境ではどうしてもこれが実行できず。
ネットで情報を探しまくった結果、「rake」で同じコマンドがあるという情報にたどり着き、
>rake db:create
でようやく本のとおりに実行できました。
(P.098)
Railsコンソールの抜け方
本の通り、
>rails c
でrailsコンソールを起動、
irb(main):001:0>
という表示が出ます。しかし、抜け方が書いてありません。。
結論は、
>exit
で抜ける、です。一度迷うと覚えられますが、さらっと聞いてしまうと思い出せないのは超初心者の証ですね…^^;
(P.108)
scaffoldコマンドの実行
>rails g scaffold Diary title:string body:text
このコマンドを実行しても、本のとおりに
(略)~diaries.yml?(enter "h" for help)[Ynaqdh]
とは聞いてきませんでした。
かわりに、下記のエラーが。
C:/(ルート)>rails g scaffold diary title:string body:text
invoke active_record
conflict db/migrate/(作成日時)_create_diaries.rb
Another migration is already named create_diaries: C:/(ルート)/db/migrate/(作成日時)_create_diaries.rb. Use --force to replace this migration or --skip to ignore conflicted file.
どうやら、最後の数行で対処方法の提案がある様子。
「このマイグレーションを別の場所に移すか、干渉するファイルを無視してskipしてね」といった感じか。
本では、エラー内でskipするかどうか聞いてくるのでnを入力して先に進む、とありますが、その展開にはならずskipしてね、と。分かっている人にすれば何でもない事でしょうが、超初心者にはその対処方法が分かりにくいと思います。
結論は、skipさせる場合コマンドの最後に「-s」(skipの省略コマンド)をつける、です。
↓
>rails g model Diary title:string body:text -s
(P.128)
日記データを登録する
本の通りにやってみると、投稿を作成はできるものの、本ではIDが4になっているのに、980190963という全然違う数字に。
確か、chapter4-5でIDはPRYMARY KEYをAUTOINCREMENT(自動連番)にする、となっていたのを確認している(P.095)ので、たぶんそのPRYMARY KEYが980190962みたいな数なのかな、と推測。本やネットで検索してみるがヒットせず。
最終的に、sqlite3のデータベースを直接見る方法は無いのかな?と考えて、DB Browser for SQLite(64bit版)をインストール。
DB Browser for SQLiteで、
「Open Database」から(アプリのディレクトリ)/dbへ行くと、sqlite3のデータベースファイル(拡張子.sqlite3)がいくつか見つかりました。
その中から、「development.sqlite3」を選択すると、データベースの中身が登場。
「Browse Data」タブを選択すると、テーブルの選択画面に。
プルダウンから「sqlite_sequence」を選択。
name: diaries
seq: 980190962
を発見。
う~ん、PRYMARY KEYとは違うけれど、他にそれらしいものは無く、これかな?と思ってseqの値を1にして、上部の「Write Change」がアクティブになったのでクリック。
再度、日記データを登録すると、IDが3に!
…本の4にはならないですが、元々本のとおりにやっていても、それまでに2つしか投稿データを作成していないはずなので、ここは3で良いと解釈。
※このページは、随時更新や修正を加えていきます。