はじめに
できるだけ環境を汚さないようにRuby on Rails環境を構築する手順をまとめました。
RubyとRuby on Railsのバージョン管理ができるだけやり易いように配慮しています。
実施した環境はCentOS 7.4です。Ubuntuなどでもほぼ同じ手順でできる思います。
事前準備
GitとRubyのビルドに必要なものをインストール
$ sudo yum update
$ sudo yum install -y git
$ sudo yum install -y bzip2 gcc openssl-devel readline-devel zlib-devel
1rbenvのインストール
ホームディレクトリにインストールし、さらに2ruby-buildも入れます。
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
$ git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
~/.bashrc
(または~/.bash_profile
)に以下を追記します。
# rbenv
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
反映させ、確認します。
$ source ~/.bashrc
$ rbenv -v # バージョンが表示される。
Rubyのインストール
Rubyのインストール可能なバージョンを確認します。
$ rbenv install --list
任意のバージョンのRubyをインストールします。(今回は2.5.1を指定しました)
$ rbenv install 2.5.1 # 時間かかります
インストールしたバージョンのRubyをrbenvに設定し、確認します。
$ rbenv global 2.5.1 # ※インストールしたバージョンを指定
$ ruby -v # Rubyが実行できることを確認
Rails環境の作成(ディレクトリに隔離)
3bundlerをインストール
$ gem install bundler
Railsの利用可能なバージョンを確認します。
$ gem query -ra -n "^rails$"
Railsの任意のバージョンの環境をディレクトリにまとめます。
(今回は5.2.0を指定しました)
$ mkdir rails_v5.2.0 # お好きな名前を
$ cd rails_v5.2.0
$ bundle init # カレントディレクトリにGemfileを作成
$ echo 'gem "rails", "5.2.0"' >> Gemfile # ※ 任意のバージョンを指定
$ bundle install --path vendor/bundle # ./vendor/bundleにRails関連のGemが入る
「bundle exec」省略設定
今のままだとrailsコマンドを実行するときに、bundle exec rails
と入力しないといけないので、これを省略できるようにする設定をします。(参考: bundle execを省略してみる - Qiita)
便利なスクリプトをダウンロード
$ curl -L https://github.com/gma/bundler-exec/raw/master/bundler-exec.sh > ~/.bundler-exec.sh
~/.bundler-exec.sh
を編集します(下の方のリストにrailsを追記)
<<< 省略 >>>
unicorn
unicorn_rails
wagon
rails <-これを追記
}"
define-bundler-aliases
unset -f define-bundler-aliases
~/.bashrc
(または~/.bash_profile
)に以下を追記します。
# "bundle exec" shortcut setting
[ -f ~/.bundler-exec.sh ] && source ~/.bundler-exec.sh
反映します。
$ source ~/.bashrc
Railsプロジェクトの作成
Railsのプロジェクトは、上記で作成したRailsディレクトリの中で作成します。
Gemはプロジェクトごとのディレクトリにインストールするようにします。
$ cd ~/rails_v5.2.0 # 上記で作成したRailsディレクトリに移動
$ rails new <プロジェクト名> --skip-bundle # プロジェクトの作成
--skip-bundle
は4bundle install
を自動で行わないようにするオプションです。これをしないと、Ruby自体にGemがインストールされてしまいます。
今回はそうではなく、プロジェクトフォルダ内のvendor/bundle
内に、プロジェクトで必要なGemをインストールしたいと思います。
$ cd <プロジェクトフォルダへのPath>
$ bundle install --path vendor/bundle # ./vendor/bundleにGemをインストール
$ echo '/vendor/bundle' >> .gitignore # Gitの管理対象から外す
MySQL(MariaDB)の設定
別記事にまとめています。
MariaDBのインストール/初期設定 [CentOS7] - Qiita
まとめ
本記事のやり方で、RubyとRailsのバージョンを簡単に管理することができます。また、できるだけ環境を汚したくない方にとっても良い方法だと思います。