LoginSignup
7
11

More than 5 years have passed since last update.

【Rails】ruby、gem、rbenv、rails、bundler関係等適当まとめ。特にbundler

Last updated at Posted at 2016-10-20

Macを触り始めて数ヶ月、Railsを使ってWebサービスを開発しようと思ったが一番最初にぶち当たった壁がRubyの関係や構成、運用方法だったりを適当にまとめます。
完璧私用メモとなってます。。。
Railsは最下層なので説明は省きます

参考記事
bundle install と updateの違い
Rails開発環境の構築(複数バージョン共存可能)(Homebrew編)

位置関係

位置関係を図で適当に表したらこうなります

bundlerでプロジェクトGemファイルを管理しない場合

rbenv
rbenv-->ruby
rbenv-->ruby-->gem
rbenv-->ruby-->gem-->rails

bundlerでプロジェクトGemファイルを管理する場合

rbenv
rbenv-->ruby
rbenv-->ruby-->bundler
rbenv-->ruby-->bundler-->gem
rbenv-->ruby-->bundler-->gem-->rails

各種説明

Ruby

・全ての元となる言語そのも
・これは説明は必要無いですね

$ ruby -v
>>ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]

gem

・Rubyの内部に組み込まれているRubyでのパッケージ管理システムのようなもの(apt-get等)
・Rubyの一部なのでRubyをインストールすると自動的にこのコマンドも使用することができる。
・Rubyの一部なので複数のRubyをインストールした場合、Gemはそれぞれ独立して存在している。
つまり、Ruby 2.2.2のGemにRailsをインストールしてもRuby 2.3.1にはインストールされない。

$ gem -v
>>2.5.1
$ gem install rails
>>↑でRailsがインストールされます。

rbenv

・Rubyのバージョンを管理する→Rubyの内部には無くRubyとは独立した存在である
・当然これでrubyのバージョンを切り替えると使用するgemも変わる
・ruby をインストール場合rbenvで管理できるためにrbenv install 2.3.1等でインストールする。

$ ruby -v
>>ruby 2.3.1p112

$ rbenv global 2.2.2
$ ruby -v
>>ruby 2.2.2p95

$ rbenv local 2.4.0-dev
$ ruby -v
>>ruby 2.4.0-dev

bundler

・gemを管理するやつ
・特徴として異なる開発環境上(複数人開発)で開発する場合Railsのバージョンなどに違いがあれば正常に動かないことが多いので、プロジェクトフォルダの中にRailsなどのパッケージファイルをインストールして、それを使用して開発を行うことが容易になるヤツ

下記に初期の手順を
"bundler init"でGemfileというパッケージリストを生成する(この中に記述されるパッケが使用される)
"bundler install"でGemfileのリストのパッケージをダウンロードインストール
これで仮にrailsをインストールした場合は、
"bundler exec rails s "でrailsサーバー起動が起動します。
※別途ファイルパスを設定する必要があったりします。

$ bundler init
$ bundler install
$ bundler exec rails s

・"bundler exec"経由で起動することでプロジェクトフォルダ内部にあるパッケージを利用します。これをせずにやると、PCにインストールされているものが利用されます。
下記の例だと、現在Ruby 2.3.1を使用していますが2.3.1のgemにはrailsはインストールされていなくRuby 2.2.2にはインストールされていますという警告が出てます。
ですが、bundler exec経由でコマンドを実行するとそのプロジェクトフォルダ内部のrailsを参照しているため使用することができるのです

$ ruby -v
>>ruby 2.3.1p112

$ rails -v
>>rbenv: rails: command not found

The `rails' command exists in these Ruby versions:
  2.2.2

$ bundler exec rails -v
>>Rails 5.0.0.1

バカヤロウ全然ちげーじゃねぇかって思ったすごい方のコメント等指摘お願いします。。。

7
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
11