本記事の目的
Rails 4.2 チュートリアルのためにローカルに環境を作ろうとしたら、 いろいろ調べたいことがあったので、備忘録として簡単にまとめておきたいと思います。
方針
方針補足
3つ目のローカルインストールは、以下のようなメリデメがあります。
メリット
- 複数プロジェクトが共存してもGemを管理しやすい
- プロジェクトフォルダを削除するだけでRuby環境が初期状態に戻せる
デメリット
- rails やrake コマンド実行時にbundle exec を付ける必要がある
- 1回目のbundle install 実行時に–path vendor/bundle を付ける必要がある
環境
- OS:Mac OS X EI Capitan 10.11.6
- Software
構築手順
0. Homebrew のインストール
以前はXcodeのインストールとか必要だったようですが、今は公式に書いてあるコマンドで一発のようです。(未検証)
以下のコマンドでインストール確認できます。
$ brew --version Homebrew 1.1.11 Homebrew/homebrew-core (git revision 6199; last commit 2017-03-08)
1. rbenv のインストール
Homebrew 経由でrbenv をインストールします。
$ brew update $ brew install rbenv
その後、rbenv関連のパスを通したりといった初期設定のコマンドを追加します。 パスを通すコマンドを.bash_profile に追加している記事もありましたが、なくても問題ありませんでした。
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile $ source ~/.bash_profile
最後にインストールを確認します。
$ rbenv -v rbenv 1.1.0
rbenvインストール補足
なお、Rubyをビルドインするプラグインであるruby-build はrbenv と一緒にインストールされるようです。(未確認)
$ ruby-build --version ruby-build 20170112
2. Ruby のインストール
MacOSX の初期状態では、Ruby 2.0.0 が入っているようです。
$ ruby -v 2.0.0
$ rbenv install -v 2.2.3
-vオプションを付けないと、インストールの進捗がわからなくて不安になるので、付けるのがオススメです。
以下のコマンドを実行して、Ruby 2.2.3 が正しくインストールされたかを確認できます。
$ rbenv versions $ rbenv global 2.2.3 $ ruby -v ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin15]
必要かどうか未検証ですが、ここでopenssl と readline をインストールしました。
$ brew install openssl readline $ brew list openssl readline ...
Rubyインストール補足
Ruby のインストール時にopenssl やreadline、libiconv のパス渡しが必要だというサイトもありましたが、私の環境ではなくても動いています。
Rails開発環境の構築(複数バージョン共存可能)(Homebrew編) - Qiita
また、rbenv rehash はrbenv が最新だと不要だということで、なしでやりましたが大丈夫でした。
3. SSL証明書のダウンロード
今の状態だと bundle install コマンドなどでSSL通信をしようとするとエラーになるため、SSL証明書をダウンロードする必要があります。
まず、証明書のパスを確認します。
$ ruby -ropenssl -e "p OpenSSL::X509::DEFAULT_CERT_FILE" /usr/local/etc/openssl/cert.pem
確認したパスに証明書をダウンロードして完了です。
$ sudo curl "https://curl.haxx.se/ca/cacert.pem" -o /usr/local/etc/openssl/cert.pem
証明書はファイルサイズがそこそこあるので、ちゃんとダウンロードできたかを確認したい場合は、 cat コマンドではなくVimなどのエディタで確認するのがおすすめです。
$ vim /usr/local/etc/openssl/cert.pem
## ## Bundle of CA Root Certificates ## ## Certificate data from Mozilla as of: Wed Jan 18 04:12:05 2017 GMT ## ## This is a bundle of X.509 certificates of public Certificate Authorities (以下省略)
4. bundler のインストール
今回はgem の中でbundler のみグローバルインストールします。
$ gem install bundler $ gem which bundler /Users/macuser/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/bundler-1.14.6/lib/bundler.rb
なお、gem install の前にrbenv exec を付けているサイトもありましたが、付けなくてもrbenv 管理下gem が実行されるので、なくて問題ありませんでした。
$ which gem /Users/macuser/.rbenv/shims/gem
新しいRailsプロジェクトを作る
1. プロジェクトフォルダを作る
通常はここでrails new を実行しますが、 今回はRails もプロジェクトフォルダ内にローカルインストールするため、まだrails コマンドが使えません。
$ rails -v Rails is not currently installed on this system. To get the latest version, simply type: $ sudo gem install rails You can then rerun your "rails" command.
そこで先にプロジェクトファイルを作って移動します。
$ cd $ mkdir workspace $ cd workspace $ mkdir hello-app $ cd hello-app $ pwd /Users/macuser/workspace/hello-app
2. bundler 経由でRails をインストール
プロジェクトフォルダ内にGemfile を作ってRails をインストールします。
$ bundle init $ vim Gemfile
# frozen_string_literal: true source "https://rubygems.org" gem "rails", "4.2.2"
$ bundle install --path vendor/bundle
path を指定することで、指定されたパスにGemfile に記載されたgem がインストールされます。
なお、この後のbundle update (またはinstall)ではpath指定は不要です。 一度パス指定をすると .bundle/config ファイルにgem のインストール先が記録されます。
$ bundle exec rails -v Rails 4.2.2
bundle exec を付けることでbundler が管理しているgem を使ってコマンドを実行することができます。
ローカルインストール補足
ここまでの状態を確認するとローカルインストールについて理解が深まりました。
$ rails -v Rails is not currently installed on this system. To get the latest version, simply type: $ sudo gem install rails You can then rerun your "rails" command.
Rails のgem はbundler が管理しているので、Rails のインストール前と結果は変わりません。
$ gem list bigdecimal (1.2.6) bundler (1.14.6) io-console (0.4.3) json (1.8.1) minitest (5.4.3) power_assert (0.2.2) psych (2.0.8) rake (10.4.2) rdoc (4.2.0) test-unit (3.0.8)
同じように、rbenv が管理しているRuby 2.2.3 にはRails が入っていないことがわかります。
プロジェクトフォルダ内にローカルインストールされているgem は以下のいずれかのコマンドで確認できます。
$ bundle exec gem list $ bundle list
3. プロジェクトフォルダをRails new する
ここまで来てやっとRails new を実行します。
$ pwd /Users/macuser/workspace/hello-app $ bundle exec rails new .
Gemfile の上書き確認はy -> [Enter] で続行できます。
プロジェクトフォルダはカレントディレクトリ(.) を指定します。 これでhello-app フォルダがRails プロジェクトフォルダになります。
この時、–skip-bundle をしないとgem がグローバルインストールになってしまうようと記載しているサイトもありましたが、 私の環境ではbundle init の時点でgem のインストール先設定が書いてある.bundle/config ファイルがあったので、なくても問題ありませんでした。
$ cat .bundle/config --- BUNDLE_PATH: "vendor/bundle" BUNDLE_DISABLE_SHARED_GEMS: "true"
4. .gitignore の設定
gem ファイルが全てvendor/bundle 配下に入っているので、このままだと大量のgem ファイルがgit 管理下に置かれてしまいます。
以下のコマンドを実行して、vendor/bundle をgit 管理外に設定します。
$ git config --global core.excludesfile ~/.gitignore_global $ echo '/vendor/bundle' > ~/.gitignore_global
5. 動作確認
$ bundle exec rails s
http://localhost:3000 へアクセスして初期画面が表示されれば成功です。
既存のプロジェクトに参加する
※力尽きたので手順のみメモ
おまけ
どこまでやったか分からなくなったのでやり直したい
以下のコマンドでrubyおよびそのgemを一掃して、rbenv インストール後からやり直せます。
$ rbenv global system $ ruby -v 2.0.0 $ rbenv uninstall 2.2.3
参考
rbenvつかってrailsチュートリアルやってみよう! | niwatako$
Rails開発環境の構築(複数バージョン共存可能)(Homebrew編) - Qiita
rbenvおよびbundlerの基本的な使用方法 - Qoosky