1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

Railsの便利機能「Application Template」で rails newと初期設定を自動化できた!

Railsアプリの新規作成から初期設定までをrails newrails 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

-Bbundle 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の初期設定の自動化を夢見てきたので感激です(´;ω;`)

以上です。

参照

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?