Rails再びつまずく、scriptの中身ないじゃん

教科書どおり、さっそく前回のアプリにフィールドをつくってやるべし。とscaffold を実行します。しかしあえなく失敗。しかもエラーメッセージに唖然。あきらかに、そんなスクリプトないぜって言ってます。

ruby: No such file or directory — script/generate (LoadError)

おーぃ・・・・

前回の投稿でここまでの顛末を書いてありますので、参考にしてください。
もうその本の通りに移します。
>ruby script/generate scaffold ticket name:string seat_id_seq:string adress:text price_paid:decimal email_adress:string

実行すると出てきたのは

ruby: No such file or directory — script/generate (LoadError)

そんなものしらねぇって事ですね。分かりましたよ。なんか根本的に間違ってる気がします。

Rubyを学んだ方はご存知でしょうが、スクリプト言語なので、

ruby プログラム名.rb

というようにして実行するのはわかります。Railsが自動で生成したフォルダのscriptの中にあるRubyのスクリプト、generateを実行し、その引数がscaffoldやアプリ名であるticketとそれに続くフィールド名と型です。

では、肝心のscriptフォルダの中はどうなっているのか?覗いてみると

なにもない・・・いや、railsってのがひとつだけ???

生成されるときにおかしかったのか?はたまた何かが根本的に間違っているのか。

 

そういえば、rails tickets のコマンドも弾かれてしまいました。rails new ticketsとすると実行できました。これは・・・

バージョンが上がって使い方も変わった・・・?

初心者に優しくないですよね。戸惑いますよ。

というわけで、前述の

>ruby script/generate scaffold ticket name:string seat_id_seq:string adress:text price_paid:decimal email_adress:string

は下記のように変わります。

>rails g scaffold ticket name:string seat_id_seq:string adress:text price_paid:decimal email_adress:string

これまではRubyでスクリプトを実行していたところが、Railsが直接scaffoldを実行するようになったようです。だから、scriptフォルダの指定がなくなりました。「g」はgenerateの名残でしょうか。ちょっと戸惑います。

この実行は予めアプリケーションのフォルダに移動してから実行します。

実行してみた結果はこちら

成功!!

やっと次にすすめそうです。