Macを触り始めて数ヶ月、Railsを使ってWebサービスを開発しようと思ったが一番最初にぶち当たった壁がRubyの関係や構成、運用方法だったりを適当にまとめます。
完璧私用メモとなってます。。。
Railsは最下層なので説明は省きます
参考記事
bundle install と updateの違い
Rails開発環境の構築(複数バージョン共存可能)(Homebrew編)
位置関係
位置関係を図で適当に表したらこうなりますbundlerでプロジェクトGemファイルを管理しない場合
rbenv rbenv-->ruby rbenv-->ruby-->gem rbenv-->ruby-->gem-->railsbundlerでプロジェクト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
バカヤロウ全然ちげーじゃねぇかって思ったすごい方のコメント等指摘お願いします。。。