「git clone」した後に実行しただけで環境が整うbin/setup

f:id:ryoutaku_jo:20190407201440p:plain

【結論】

・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時間!」