【メモ】Railsをローカルインストールするスクリプトを書いてみた
はじめに
シェルスクリプトの練習がてら、Railsをローカルでインストールしてプロジェクトの作成まで行うスクリプトを書いてみました。
主にこちらの記事を参考にさせていただきました。これを土台として、ちょっとだけ変更を加えた感じとなっています。
実行環境はWSL2で、ディストリビューションはUbuntu 20.04です。
たぶんMacでも動くと思いますが一応。
スクリプトの内容
下記スクリプトの実行時には、第1引数にプロジェクト名を、第2引数にRailsのバージョンを指定して使うことを想定しています。
この第2引数は省略も可能で、省略した場合はバージョン指定が行われないので最新バージョンのRailsがインストールされるようになっています。
1行目のshellへのパスは環境に応じて異なると思うので、適宜変更していただければと。
#!/usr/bin/zsh
# 引数
# 1:rails project name, 2:rails version
RAILS_PROJECT_NAME=$1
RAILS_VERSION=$2
RAILS_INSTALL_SENTENCE='gem "rails"'
# railsのバージョンが引数で指定されている時、そのバージョンのrailsをインストールする
if [ -n "$RAILS_VERSION" ]
then
RAILS_VERSION_SENTENCE=", \"$RAILS_VERSION\""
RAILS_INSTALL_SENTENCE="$RAILS_INSTALL_SENTENCE$RAILS_VERSION_SENTENCE"
fi
# railsのgemだけインストールするためのGemfileを作成
cat << EOS > Gemfile
source "http://rubygems.org"
$RAILS_INSTALL_SENTENCE
EOS
# railsをローカルにインストール
bundle config set path 'vendor/bundle'
bundle install
# rails projectを作成(bundle installはしない)
bundle exec rails new $RAILS_PROJECT_NAME --skip-bundle
# ローカルにインストールしたrailsが不要になったので削除
rm -f Gemfile Gemfile.lock
rm -rf .bundle vendor
# (一応)ローカルにインストールしたgemファイルをgitの監視下から外しておく
cat << EOS >> $RAILS_PROJECT_NAME/.gitignore
/vendor/bundle
EOS
上記スクリプトのファイルを『rails_new_script.sh』とか適当な名前で保存したあと、以下のようにコマンド入力すればOK。
ex.1) $ ./rails_new_script.sh rails_test 5.2.4.4
ex.2) $ ./rails_new_script.sh rails_test2