はじめに
まず前提としてMacにRubyがインストールされている必要があります。
Rubyのインストールについては下記の記事を参考してみてください。
https://no-title.com/programming/ruby/ruby
まとめ
下記、長々と私自身の知識整理のために長々と記載していますので、
インストールの方法だけ確認されたいという場合はここだけお読みください。
#bundlerをインストール gem install bundler #Railsをインストールするプロジェクトディレクトリを作成する mkdir project_name && cd $_ #ディレクトリ内にGemfilesを作成する bundle init #GemfileにRuby on Railsのインストール設定を記述する echo 'gem "rails"' >> Gemfile #BundlerツールでGemfileに書かれているgemをインストールする bundle install --path=vendor/bundle --binstubs=bundle_bin #カレントディレクトリにrailsプロジェクトを作成する rails new . #上書きするか聞いてくると思いますので「y」を入力します。 Overwrite /Users/Me/ruby/test-project/Gemfile? (enter "h" for help) [Ynaqdh] y #プロジェクトの起動します rails server
ブラウザで「http://localhost:3000」にアクセスしてみましょう。
railsの初期画面が出て来れば成功です。
Bundlerをインストールする
Bundlerとは?
まずRuby on Railsを導入する前にBundlerをインストールする必要があります。
そうすると、Bundlerって何?って話になると思いますので、少しBundlerについて話をしたいと思います。
Bundlerについて話す前に、まずGemパッケージについて説明しておきたいと思います。
Gemとは端的にいうと、Rubyで使用されるライブラリのことです。
Rubyで使われるライブラリやアプリケーションはGemと呼ばれる形式のパッケージにすることができます。多くのライブラリがGem形式でパッケージされ公開されており、これらはRubyGemsと呼ばれるパッケージ管理ツールを使ってダウンロードを行なったりインストールすることができます。これらのパッケージのことを単にGemとかGemパッケージなどと呼んだりします。
[引用:Bundlerを使ったGemパッケージの管理]
なお、RubyのライブラリたるGemは下記のコマンドでインストールできます。
gem install (gemパッケージ名)
そして、プロジェクト毎で使用するRubygemsを管理するしくみこそがbundlerです。
ですので、今後は、Gemパッケージをインストールする場合はbundlerを使用するのが良いです。
Bundler は、Rubyアプリケーションの動作に必要なgemを束ね(bundle)て、依存関係を管理するためのツールです。
- アプリケーションの依存するgem一覧をファイル(後で出てきますが、これをGemfileと呼びます)で指定するため、利用gemをソースコードと一緒にバージョン管理システムで管理できる
- 他の作業者が環境構築する時や、しばらくコードの更新が止まっていたプロジェクトを再開する時に起こりがちな依存ライブラリ問題を回避し、すぐに「動く状態」までもって行きやすい
…など、長期的・現実的にRubyアプリケーション開発を行う時の問題を解決してくれるため、2014年2月現在、Rubyを用いた開発のデファクトスタンダードとなっています。
[引用:
]
ではそもそもなぜBundlerを使用するのでしょうか?
とてもわかりやすい記事を見つけたので引用させていただきたいと思います。
gem は更新頻度が高く、互換性が無くなってアプリケーションが動かなくなったりする場合があります。 その問題を解決できるのが Bundler という gem 管理ツールです。
また、開発チームのメンバー間で環境構築の際に どのバージョンの gem をインストールするかを Bundler に任せることができます。
Ruby 自体のバージョンは、プロジェクト毎に rbenv で管理する。
gem のバージョンは、プロジェクト毎に Bundler で管理する。
というイメージです。
[引用:Ruby の gem をプロジェクト毎に Bundler で管理する]
つまり、Rubyのプロジェクト作成の流れとしては、rbenvで使用するバージョンを設定して、Bundlerで必要なGemをインストールするという流れでしょうか。
ちなみにrbenvではGemをRubyのバージョン毎に管理しているので、どのバージョンのrubyにどのパッケージをインストールしたかを確認するには
rbenv global (rubyのバージョン) gem list
とします。
なお、Bundlerのインストール場所を確認するには
gem which bundler
とします。
Bundlerをインストールする
前置きが長くなりました。
さっそくbundlerをインストールしましょう。
gem install bundler
bundlerはマシン全体で共有できるツールなのでグローバルインストールします。
インストールしたgemパッケージは、マシン全体で共有されます。
(といってもRubyのバージョンを変えると共有されません)
Ruby on Railsをインストールします。
いよいよBundlerを用いてRuby on Railsをローカルインストールします。
#Railsをローカルインストールするプロジェクトディレクトリを作成する mkdir project_name && cd $_ #ディレクトリ内にGemfilesを作成する bundle init #GemfileにRuby on Railsのインストール設定を記述する echo 'gem "rails", "(バージョン値)"' >> Gemfile #BundlerツールでGemfileに書かれているgemをインストールする bundle install --path vendor/bundle
オプションで –path=vendor/bundle を指定すると 指定したディレクトリ内に gem がインストールされます。
パスを指定しなかった場合は、グローバルインストールになります。
※パスを指定しない場合、rbenvのグローバル領域にインストールされます。私の環境の場合は(/Users/Me/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/にインストールされました)
pathを指定するとカレントディレクトリにvendor/bundleというディレクトリが作成され、そこにインストールされます。
なお、間違えてグローバルにインストールされた場合は、下記のコマンドでデフォルトのGem以外をアンインストールします。
gem uninstall -axI `gem list --no-versions | egrep -v 'test-unit|rdoc|bigdecimal|io-console|json|minitest|psych|rake'`
ローカルインストールされたgemを確認してみましょう。
bundle list
下記のコマンドを入力して、バージョン値が表示されれば、成功です。
bundle exec rails -v
※ローカルインストールしたので、rails -vだけでは「rails: command not found」になります。
なのでbundle execをrails -vの前に追記して実行します。
bundle execを省略したい場合
#binstubsプラグインを入れる mkdir -p ~/.rbenv/plugins cd ~/.rbenv/plugins git clone https://github.com/ianheggie/rbenv-binstubs.git
bundle install --path=vendor/bundle --binstubs=bundle_bin
railsプロジェクトの作成
カレントディレクトリにrailsのプロジェクトを作成する場合
下記のコマンドを入力します。
#カレントディレクトリにrailsプロジェクトを作成する rails new . #上書きするか聞いてくると思いますので「y」を入力します。 Overwrite /Users/Me/ruby/test-project/Gemfile? (enter "h" for help) [Ynaqdh] y #プロジェクトの起動します rails server
なお、vendor/bundleディレクトリはgitで管理する必要がないので.gitignoreに追記しておきしょう。
以下の2つの理由から、Gitの管理対象から vendor/bundle ディレクトリを外す。
- vendor/bundleディレクトリにあるGemsは容量を食うのでGitリポジトリに入れたくない。
- GemfileやGemfile.lockファイルはGitの管理対象なので、cloneした人はそれをもとにbundle install –path vendor/bundleすれば、簡単に同じGem環境を導入できる。
echo '/vendor/bundle' >> .gitignore
※なおカレントディレクトリ以外にrailsプロジェクトを作成する場合は
「rails new sample –skip-bundle」のように–skip-bundleをつけるようにしましょう。
これをつけないと「run bundle install」が実行され、gemがグローバルにインストールされてしまいます。
rails serverを実行したら、ブラウザで「http://localhost:3000」にアクセスしてみましょう。
railsの初期画面が出て来れば成功です。
参考
http://blog.tokoyax.com/entry/ruby/bundler
http://hatenablog.com/embed?url=http://techacademy.jp/magazine/4630
http://mawatari.jp/archives/build-a-development-environment-of-rails-to-mac
http://qiita.com/emadurandal/items/a60886152a4c99ce1017