Railsで使いたいgemが大体定まってくるとrails new
でアプリケーションを作ってからの作業が毎回同じことの繰り返しで面倒になってくる。その上、手作業だと設定漏れが出ることも往々にしてあるため、自動化するのが望ましい。
幸いrails new
コマンドには-m
オプションでテンプレートを指定できるようになっている。
公式ドキュメントはこれ。
Rails Application Templates — Ruby on Rails Guides
サンプルコードを見ると何ができるのかわかりやすい。
# template.rb
generate(:scaffold, "person name:string")
route "root to: 'people#index'"
rake("db:migrate")
git :init
git add: "."
git commit: %Q{ -m 'Initial commit' }
rails-composer
テンプレートは自分で必要なものだけを入れて作るのが普通だとは思うが、誰かが用意したテンプレートを使うという手もある。そういったテンプレートのうち、全部入りな感じのテンプレートを提供しているのがrails-composer
というプロジェクトだ。
このような使い方ができる。-m
オプションにGitHub上にあるテンプレートファイルのURLを渡す。
% rails new myapp -m https://raw.github.com/RailsApps/rails-composer/master/composer.rb
実行すると色々な質問に答えながらセットアップが進む。
question Web server for development?
question Web server for production?
question Database used in development?
question Template engine?
question Test framework?
question Continuous testing?
question Front-end framework?
question Add support for sending email?
question Authentication?
question Authorization?
question Use a form builder gem?
- Webサーバーには何を使うか(Puma/Unicorn/Thinなど)
- DBには何を使うか
- テンプレートエンジンには何を使うか(ERB/Haml/Slim)
などなど。質問の答えによって追加されるgemや配置される設定ファイルなどが変わる。
一例として全ての出力をGistに貼ってみた。とてもじゃないけど全文をembedする気にはなれなかった。
https://gist.github.com/pi-chan/16e053d83cabcb498336
プロダクション運用するアプリケーションの場合はよく考えた上でミニマルなテンプレートを使うのが適切だろうけれど、検証のためにとりあえず作ってみるといった用途の場合はrails-composerのような全部入りのテンプレートでもいいかもしれない。