【結論】
・bin/setupとは、Railsが用意している アプリケーションを初期化する為のスクリプト
・あらかじめカスタマイズしておく事で、 マイグレーションを実行してDBを真っ新に構築し直して、 seedファイルを読み込んで初期データを投入したり、 といった初期の環境構築を、全部一度に実行できる
・ブランチを切り替える度に環境を構築し直す際や 他メンバーがプロジェクトに参加した際に 環境構築を速やかに行える様に出来るメリットがある
【目次】
【本題】
bin/setupとは
bin/setupとは、アプリケーションを初期化する為のスクリプトです。
「rails new」を実行した際に、「bin」ディレクトリ配下に、 下記の様なファイルが自動生成されます。
#!/usr/bin/env ruby require 'pathname' require 'fileutils' include FileUtils # path to your application root. APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) def system!(*args) system(*args) || abort("\n== Command #{args} failed ==") end chdir APP_ROOT do # This script is a starting point to setup your application. # Add necessary setup steps to this file. puts '== Installing dependencies ==' system! 'gem install bundler --conservative' system('bundle check') || system!('bundle install') # puts "\n== Copying sample files ==" # unless File.exist?('config/database.yml') # cp 'config/database.yml.sample', 'config/database.yml' # end puts "\n== Preparing database ==" system! 'bin/rails db:setup' puts "\n== Removing old logs and tempfiles ==" system! 'bin/rails log:clear tmp:clear' puts "\n== Restarting application server ==" system! 'bin/rails restart' end
1コマンドで開発環境が整う
初めは最小限の設定しか記述されていませんが、 このファイルを編集する事で、様々な初期設定の操作を自動化できます。
例えば、マイグレーションファイルの実行(既にテーブルが存在する場合はドロップ)や、 seedファイルを読み込んで、初期データを投入したりといった 開発環境に必要な最初の手順を1コマンドで実行できます。
初めにファイルをカスタマイズするのが面倒ではありますが、 これによって、様々な恩恵が得られます。
・ブランチを切り替えて、別機能の検証をする際に、スムーズに環境構築出来る ・他メンバーのプロジェクト参加もスムーズ ・READMEに環境構築の手順を細かく書く必要が無くなる
エンジニアの三大美徳に「怠慢」という言葉がありますが、 まさにこういった単純作業の自動化がそれだと言えます。
《今日の学習進捗(3年以内に10000時間に向けて)》
学習開始からの期間 :121日
今日までの合計時間:1140h
一日あたりの平均学習時間:9.5h
今日までに到達すべき目標時間:1105h
目標との解離:35h
「10,000時間」まで、
残り・・・「8860時間!」