Ruby on Rails開発環境を構築する(Homebrew, rbenv, Bundler)
MacにRuby on Railsの開発環境を構築する方法をメモしておきます。
Rubyに関してはrbenvを使うことを前提とします。rbenvのインストールについては以下を参照してください。
Homebrewでrbenvをインストールする
目的
この記事では、Ruby on Railsを用いたチーム開発のための環境を構築することを目的とします。何かとトラブルになりやすいバージョン管理や、パッケージの依存関係などを意識しなくとも、他のメンバーがインストールコマンド一発で、同一の開発環境を手に入れれるようにするための手順をまとめました。
環境
環境は以下の通りです。環境構築後にRuby on Rails チュートリアルに取り組む予定なので、Rubyのバージョンは、2.0.0としました。
ソフトウェア | バージョン |
---|---|
Mac OS X | 10.10.2 |
rbenv | 0.4.0 |
Ruby | 2.0.0p598 |
Bundlerをインストールする
RubyのパッケージマネージャーであるBundlerをインストールします。PHPでいうところのComposer、Nodeでいうところのnpmですね。手順は以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 | # Ruby 2.0.0にバージョンを切り替える rbenv global 2.0.0-p598 # Bundlerをインストール rbenv exec gem install bundler Fetching: bundler-1.8.3.gem (100%) /Users/mawatari/.rbenv/plugins/rbenv-gem-rehash/rubygems_plugin.rb:3: warning: Insecure world writable dir /usr/local in PATH, mode 040777 Successfully installed bundler-1.8.3 Parsing documentation for bundler-1.8.3 Installing ri documentation for bundler-1.8.3 1 gem installed |
Bundler 1.8.3がインストールされました。
ちなみに rbenv execコマンドは、「rbenvで現在有効なRuby」を明示するものです。ですので、前述のとおりにrbenv環境を構築していれば、基本的には省略しても問題ありません。
rbenvではGemをRubyのバージョン毎に管理します。今回は、Ruby 2.0.0-p598に切り替えた上でBundlerをインストールしたので、2.0.0-p598以外にはインストールされていません。以下のコマンドでそれが確認できます。
1 2 3 4 5 6 | gem which bundler /Users/mawatari/.rbenv/versions/2.0.0-p598/lib/ruby/gems/2.0.0/gems/bundler-1.8.3/lib/bundler.rb rbenv global 2.2.0 gem which bundler ERROR: Can't find ruby library file or shared library bundler |
Ruby on Railsをインストールし、アプリケーションを作成する
Bundlerを用いてRuby on Railsをローカルインストールします。
こうすることで、本プロジェクトに必要なGemをプロジェクト内に留めることができるので、Ruby環境下を汚さずにすみます。複数のRailsプロジェクトを同時に開発する場合、特にプロジェクト間でRailsのバージョンが異なる場合に面倒なことになりません。
まずはインストールするための準備を行います。
1 2 3 4 5 6 7 8 | # プロジェクトディレクトリを作成し移動する mkdir project_name && cd $_ # Gemfileを作成する bundle init # GemfileにRuby on Railsのインストール設定を記述する echo 'gem "rails", "4.0.5"' >> Gemfile |
Ruby on Rails チュートリアルで用いるバージョンに合わせて、4.0.5を指定しました。
準備が整ったので、Ruby on Railsを vendor/bundle以下にインストールします。同時に関連Gemもインストールされます。
繰り返しになりますが、ここでは必ずパスの指定をし、プロジェクト内にインストールしてください。パスの指定をしなかった場合、Gemのインストール先が使用中のRuby環境下になってしまいます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | bundle install --path vendor/bundle Fetching gem metadata from https://rubygems.org/........... Fetching version metadata from https://rubygems.org/.. Resolving dependencies... /Users/mawatari/.rbenv/plugins/rbenv-gem-rehash/rubygems_plugin.rb:3: warning: Insecure world writable dir /usr/local in PATH, mode 040777 Installing rake 10.4.2 Installing i18n 0.7.0 Installing minitest 4.7.5 Installing multi_json 1.10.1 Installing thread_safe 0.3.4 Installing tzinfo 0.3.43 Installing activesupport 4.0.5 Installing builder 3.1.4 Installing erubis 2.7.0 Installing rack 1.5.2 Installing rack-test 0.6.3 Installing actionpack 4.0.5 Installing mime-types 1.25.1 Installing polyglot 0.3.5 Installing treetop 1.4.15 Installing mail 2.5.4 Installing actionmailer 4.0.5 Installing activemodel 4.0.5 Installing activerecord-deprecated_finders 1.0.3 Installing arel 4.0.2 Installing activerecord 4.0.5 Using bundler 1.8.3 Installing hike 1.2.3 Installing thor 0.19.1 Installing railties 4.0.5 Installing tilt 1.4.1 Installing sprockets 2.12.3 Installing sprockets-rails 2.0.1 Installing rails 4.0.5 Bundle complete! 1 Gemfile dependency, 29 gems now installed. Bundled gems are installed into ./vendor/bundle. |
インストールに成功しました。
次に、 railsコマンドでアプリケーションを作成します。Bundlerを用いてローカルインストールしているため、 bundle execコマンド経由で実行します。その際、途中でGemfileの上書きを確認されるので実行してください。 -fオプションを付与することで確認をスキップすることもできます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | # カレントディレクトリにアプリケーションを作成 bundle exec rails new . /Users/mawatari/.rbenv/versions/2.0.0-p598/lib/ruby/gems/2.0.0/gems/bundler-1.8.3/lib/bundler/shared_helpers.rb:83: warning: Insecure world writable dir /usr/local in PATH, mode 040777 /Users/mawatari/.rbenv/versions/2.0.0-p598/lib/ruby/gems/2.0.0/gems/bundler-1.8.3/lib/bundler/shared_helpers.rb:83: warning: Insecure world writable dir /usr/local in PATH, mode 040777 exist create README.rdoc create Rakefile create config.ru create .gitignore conflict Gemfile Overwrite /Users/mawatari/work/tmp/hello/Gemfile? (enter "h" for help) [Ynaqdh] y ...省略... Bundle complete! 9 Gemfile dependencies, 43 gems now installed. Bundled gems are installed into ./vendor/bundle. Post-install message from rdoc: Depending on your version of ruby, you may need to install ruby rdoc/ri data: <= 1.8.6 : unsupported = 1.8.7 : gem install rdoc-data; rdoc-data --install = 1.9.1 : gem install rdoc-data; rdoc-data --install >= 1.9.2 : nothing to do! Yay! |
アプリケーションが作成されました。
アプリケーションが無事に作成できたか確認するため、 bundle exec rails serverコマンドでWEBrickを起動し、ブラウザで http://localhost:3000にアクセスしてみましょう。Ruby on Railsの初期ページが表示されていれば成功です。
/vendor/bundle以下は、VCSで管理する必要が無いため、 .gitignoreに追記しておきましょう。
1 | echo '/vendor/bundle' >> .gitignore |
あとはGitHubなどの好みのリポジトリにプッシュすればプロジェクトの開発準備は完了です。今回作成したプロジェクトは以下よりダウンロードできます。
Rails Initial – GitHub
プロジェクトへの参加手順
最後に、メンバーがプロジェクトに参加するための手順を記載しておきます。
1 2 3 4 5 6 | # リポジトリからクローンする(サンプルリポジトリを利用する例) git clone https://github.com/mawatari/rails-initial.git cd rails-initial # Gemをインストールする bundle install --path vendor/bundle |
RubyとBundlerさえ入っていれば、すぐにプロジェクトに参加できます!
参考サイト
以下のサイトを参考にしました。ありがとうございます。
以上です。