Rails newで自作テンプレートを使って初期に毎回やることを自動化する

Railsのアプリケーションを最初にnewで作成する時に、大体いつも使うgemの設定をまず最初にします。
例えばrspecを使えるようにしたりだとか、twitter-bootstrapを使えるようにとか・・

で、これは毎回やる作業になってきて、ここを自動化した方が効率良いなと思いました。
なので、そういう場合は、rails new する時にプロジェクトのテンプレートを指定してnewを実行するとそれらの作業を自動化することができます。


$ rails new [APP NAME] -m path/user_template.rb

以下はテンプレートの例です。

puts "nakaearth template"
run 'rm public/index.html'
run 'rm public/images/rails.png'

puts "Gemfile edit!!"
gem 'devise'
gem 'omniauth-twitter'
gem 'omniauth-facebook'
gem 'json'
gem 'kaminari'
gem 'dalli'
gem 'whenever'
gem_group :development, :test do
  gem 'rspec-rails'
  gem 'rake_shared_context'
  gem 'simplecov', require: false
  gem 'simplecov-rcov', require: false
  gem 'rubocop', require: false
  gem 'rubocop-checkstyle_formatter', require: false
  # fixtureの代わり
  gem "factory_girl_rails"
#  gem 'shoulda-matchers', require: false
  gem 'shoulda-matchers'
  gem 'json_expressions'
  # テスト環境のテーブルをきれいにする
  gem 'database_rewinder'
end
gem_group :development do
# Railsコンソールの多機能版
  gem 'pry-rails'

  # pryの入力に色付け
#  gem 'pry-coolline'

  # デバッカー
  gem 'pry-byebug'

  # Pryでの便利コマンド
  gem 'pry-doc'

# pryの色付けをしてくれる
  gem 'awesome_print'

  gem 'spring'

  # profile gem
  gem 'speed_gun'
  gem 'msgpack',  '~> 0.5.8'

  gem 'guard'
  gem 'guard-rspec', ' ~> 0.4.2'
  gem 'guard-spring'
end
# run bundle install
run_bundle

# rspec
puts "--file generate.--"
puts "rspec file generate"
generate 'rspec:install'
remove_dir 'test'
# guard
puts "guard file init"
run "bundle exec guard init"

#use bootstrapt
use_bootstrap = if yes?('Use Bootstrapt?')
                  uncomment_lines 'Gemfile', "gem 'therubyracer'"
                  gem 'less-rails'
                  gem 'twitter-bootstrap-rails', :gti => 'git://github.com/seyhunak/twitter-bootstrap-rails.git'
                  true
                else
                  false
                end
if use_bootstrap
  generate 'bootstrap:install', 'less'
  if yes?('Use responsive layout?')
    generate 'bootstrap:layout', 'application fluid'
  else
    generate 'bootstrap:layout', 'application fixed'
  end
end

puts "git init!!"
git :init
git :add=>'.'
git :commit=>"-m'initial commit'"

puts "done"

ここでは、rspecの設定とguradの初期設定をしています。

今後ここに適宜追記してアップデートする予定