Railsアプリの新規作成から初期設定までをrails new
とrails db:create
だけで完了させます。
rails newのあとにひたすらつづくgemのインストールや初期設定、めんどくさくないですか?
ちょっとしたtypoでRailsAbort! こういった人的ミスによるグツグツから開放されたくないですか?
テンプレートファイルは1つにまとめておけるので、Railsアプリ新規作成時の手順書としてもメンテできて一石二鳥ですよ!
環境
- MacOS 10.14.6
- Ruby 2.6.3
- Rails 5.2.3
- MySQL 8.0.16
- Docker 19.03.4
- docker-compose 1.24.1
※Dockerじゃなくてもイケます。
方法
RailsのApplication Templateという機能を使用します。
やること
- ApplicationTemplateファイルをつくります。
-
rails new -m app_template.rb
コマンドをうちます。 -
rails db:create
コマンドをうちます。 - 以上(*´∀`)
手順
①ApplicationTemplateファイルをつくる
プロジェクトフォルダのルートにapp_template.rb
を新規作成します。
むずかしく考えなくていいです。
いつもやってる作業を上から順にかいていくだけです。
ちなみに、わたしのapp_template.rb
はこんなかんじ。
docker-rails-mysql-template/app_template.rb at master · yukawahara0416/docker-rails-mysql-template
やってることは以下のとおり。
- gemの指定
- gem_groupの指定
- コマンドの実行(
bundle install
,rspec:intall
など) - 不要なディレクトリの削除
- 設定ファイルの取得
- 設定ファイルの書き換え(日本語化、
database.yml
など)
もっと複雑なこともできるみたいですが、これだけでもかなり手間が省けます。
②rails new -mコマンドをうつ
いつものrails new
に-m app_template.rb
をつけるだけです。
ルートフォルダに配置して使用する場合
$ rails new . -m app_template.rb
GitHubなど外部からテンプレファイルを取得する場合
$ rails new . -m https://raw.githubusercontent.com/yukawahara0416/docker-rails-mysql-template/master/app_template.rb
ほかのオプションと組み合わせて
$ rails new . -B -T -d mysql -m https://raw.githubusercontent.com/yukawahara0416/docker-rails-mysql-template/master/app_template.rb
-B
はbundle install
のスキップ、-T
はMinitest用のtestディレクトリの生成スキップ、-d mysql
はDBをMySQLに指定しています。
ちなみに、Dockerならこんなかんじです。
$ docker-compose run web rails new . -B -T -d mysql -m https://raw.githubusercontent.com/yukawahara0416/docker-rails-mysql-template/master/app_template.rb
ターミナルはこんなかんじ。順番に実行してくれてますね。
apply https://raw.githubusercontent.com/yukawahara0416/docker-rails-mysql-template/master/app_template.rb
gemfile mysql2
gemfile rails-i18n
gemfile group :development, :test
append Gemfile
gemfile factory_bot_rails
gemfile guard-rspec
gemfile rspec-rails
gemfile rubocop
gemfile spring
gemfile spring-commands-rspec
append Gemfile
gemfile group :development
append Gemfile
gemfile better_errors
gemfile binding_of_caller
append Gemfile
gemfile group :test
append Gemfile
gemfile capybara
gemfile webdrivers (~> 3.0)
append Gemfile
run bundle install from "."
...中略...
remove test
insert app/views/layouts/application.html.erb
remove .gitignore
create .gitignore
create config/locales/ja.yml
insert config/application.rb
insert config/application.rb
insert config/environments/development.rb
generate rspec:install
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
insert .rspec
run guard init rspec from "."
③rails db:createコマンドをうつ
たった1コマンドでRailsアプリの初期設定までできてしまいました。
最後にDBを生成してYay!を確認してみましょう。
$ rails db:create
ずっとRailsの初期設定の自動化を夢見てきたので感激です(´;ω;`)
以上です。