PIYO - Tech & Life -

rails-composerとrails newの-mオプション

Rails

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というプロジェクトだ。

RailsApps/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のような全部入りのテンプレートでもいいかもしれない。