0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

開発環境の構築を自動化するシェルスクリプト[Xcode, Homebrew, Ruby, MySQL]

Posted at

この記事の目的

今週の初めに以下の手順通り、Homebrewのインストールから、Rubyのセットアップまで、開発環境の構築を行いました。
そして今週の終わりに、この手順を自動化するシェルスクリプトを作成しました。初めて作成して、自動化の有益性を実感したのでここに記します。

App/construct_dev.sh

以下がシェルするクリプトです。

#!/bin/bash

# 環境変数
RUBY_VERSION=2.7.1
MYSQL_VERSION=5.7
RAILS_VERSION=6.0.3
DATABASE_HOST=127.0.0.1
LDFLAGS="-L/usr/local/opt/openssl@1.1/lib"

# 必要なパッケージのインストール
sudo curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh | bash
git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask fetch --unshallow
brew update
brew install ruby rbenv ruby-build mysql@$MYSQL_VERSION shared-mime-info gnu-sed

# プロジェクト配下に移動
cd ~/App

# Rubyのセットアップ
rbenv install -s $RUBY_VERSION
rbenv local $RUBY_VERSION
rbenv rehash

# rubyとmysqlそれぞれにパスを通す
echo 'eval "$(rbenv init -)"' >> ~/.zshrc
echo 'export PATH="/usr/local/opt/mysql@'$MYSQL_VERSION'/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

# 環境変数の設定
cp .env.example .env
gsed -i 's/DATABASE_HOST="0.0.0.0"/DATABASE_HOST="'$DATABASE_HOST'"/' .env

# 外部ライブラリのバージョン管理
bundle config --local build.mysql2 --with-ldflags=$LDFLAGS

# ローカルのRailsをセットアップ
gem install rails -v $RAILS_VERSION

# DBの起動
brew services start mysql@$MYSQL_VERSION

# Railsアプリケーションのセットアップ
bundle install
rails db:create
rails db:migrate
rails db:seed

スクリプトの説明

ここではスクリプトの実行条件と実行手順などを説明します。

スクリプトの実行条件

  1. ローカルでgit cloneができる状態であること
  2. clone先にこのスクリプトファイルが存在すること
  3. リモートリポジトリに環境変数を管理する.env.exampleファイルが存在すること

スクリプトの実行手順

① プロジェクトのクローン

$ git clone git@github.com:user_name/repogitory_name.git ~/App

② スクリプトの実行

この時、XcodeとHomebrewそれぞれのインストールのために、パスワードの入力が2回求められます。

$ bash ~/App/construct_dev.sh

③ Railsアプリの起動

$ rails s

④ ローカルホストにアクセス

スクリプトのこだわりポイント

  1. 環境構築の手順を極限まで省略していること
    git clone以外の作業をほぼ自動化していること(素晴らしい!w

  2. バージョン管理を環境変数を用いて管理していること
    これはまさにスクリプトで環境構築をする利点で、開発環境をコードで管理できるようになります

  3. Mac環境に合わせて、ファイル内の文字の置換にgsedを用いていること

gsed -i 's/DATABASE_HOST="0.0.0.0"/DATABASE_HOST="'$DATABASE_HOST'"/' .env

参考記事

gsedコマンドについて

mysql2がbundle installできないエラーについて


この記事は以上です!シェルスクリプトは初めて記述しましたが、とても便利で個人的に他にも作成してみたいと思いました!最後までお読み頂きありがとうございました!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?