テクノロジー
2017年8月28日rails g コマンドが行なっていること
rails gコマンドが実際に何を作っているのかを解説いたします。アプリケーションの土台の作成方法がわかります。
目次
rails g コマンドが行なっていることとは?
rails g (generate)
rails d (destroy)
gem install railsとrails newとrails gの違い
rails g コマンドが行なっていることとは?
rails new
コマンドでアプリケーションの土台を作成した後行うrails g
コマンド。
この記事では、このコマンドが実際に何を作っているのかを解説してみたいと思います。
rails g (generate)
rails gコマンドとは、rails newコマンド
で作ったRailsアプリケーションの土台に中身を盛り込んでいくためのコマンドです。
中身とは言っても、具体的に何を作れるのかイメージするのは難しいと思うので以下に示します。
コマンド | コントローラ | ビュー | モデル | マイグレーションファイル | ルーティング |
---|---|---|---|---|---|
controller | ○ | ○ | × | × | ○ |
model | × | × | ○ | ○ | × |
migration | × | × | × | ○ | × |
scaffold | ○ | ○ | ○ | ○ | ○ |
例えば、controllerであればコントローラとビューとルーティングを、modelであればモデルとマイグレーションのみをそれぞれ作成します。
テーブルが要らない場合はrails g controller
を使うなど、これらのコマンドは状況によって使い分けをします。
今回は処理の流れの理解を重視しているので、最後の Scaffold
というコマンドを実行して一気に作ってしまいます。
~/workspace/achieve $ rails g scaffold blog title:string content:text
以下のような表示が出力されれば大丈夫です。
Running via Spring preloader in process 97389
invoke active_record
create app/models/blog.rb
invoke test_unit
create test/models/blog_test.rb
invoke factory_girl
create test/factories/blogs.rb
invoke resource_route
route resources :blogs
invoke scaffold_controller
create app/controllers/blogs_controller.rb
invoke erb
create app/views/blogs
create app/views/blogs/index.html.erb
create app/views/blogs/edit.html.erb
create app/views/blogs/show.html.erb
create app/views/blogs/new.html.erb
create app/views/blogs/_form.html.erb
invoke test_unit
create test/controllers/blogs_controller_test.rb
invoke helper
create app/helpers/blogs_helper.rb
invoke test_unit
invoke jbuilder
create app/views/blogs/index.json.jbuilder
create app/views/blogs/show.json.jbuilder
create app/views/blogs/_blog.json.jbuilder
invoke assets
invoke coffee
create app/assets/javascripts/blogs.coffee
invoke scss
create app/assets/stylesheets/blogs.scss
invoke scss
identical app/assets/stylesheets/scaffolds.scss
ここで注意していただきたいのが、先ほどの図で書いたモデルやコントローラの他にも生成されるファイルやディレクトリが存在しているということです。
具体的には以下を指します。
- app/assets/stylesheets/blogs.scss(CSSファイル)
- test/models/blog_test.rb(テストファイル)
- app/helpers/blogs_helper.rb(ヘルパー)
- app/assets/javascripts/blogs.coffee(JSファイル)
- app/views/blogs/index.json.jbuilder(API関連のファイル)
これらの内容については今回の記事では省略させていただきます。
rails d (destroy)
rails dコマンドはrails gコマンドで作成したファイルやディレクトリを一気に削除するためのコマンドです。
つまりgenerateの 対義語
です。
例えば先ほどのコマンドを取り消したい場合は、以下のコマンドを実行します。
~/workspace/achieve $ rails d scaffold blog title:string content:text
もちろん手動で削除することもできますが、コマンドで削除した方がミスが減る上に、圧倒的にラクです。
gem install railsとrails newとrails gの違い
最後に大まかなイメージを掴んでいただくために、これらの違いを ショートケーキ
に例えてみます。
gem install railsは材料を調達する(アプリケーションを作成するための機能をインストールする)
rails newはスポンジケーキを作成する(実際のrailsアプリケーションの雛形を作成する)
rails gは生クリームを塗り、デコレーションをする(アプリケーションの具体的な設定、機能を追加していく)
以上で、rails g
コマンドについての説明を終わらせていただきます。