MacにRuby on Railsをインストールしてみる

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

はじめに

まず前提としてMacに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 <code>gem list --no-versions | egrep -v 'test-unit|rdoc|bigdecimal|io-console|json|minitest|psych|rake'</code>

ローカルインストールされた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環境を導入できる。

[引用:Rails開発環境の構築(複数バージョン共存可能)(Homebrew編)]

echo '/vendor/bundle' >> .gitignore

※なおカレントディレクトリ以外にrailsプロジェクトを作成する場合は
「rails new sample –skip-bundle」のように–skip-bundleをつけるようにしましょう。
これをつけないと「run bundle install」が実行され、gemがグローバルにインストールされてしまいます。

rails serverを実行したら、ブラウザで「http://localhost:3000」にアクセスしてみましょう。
railsの初期画面が出て来れば成功です。

参考


  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。

コメントを残す

*

CAPTCHA