質問: rbenvとbundlerを使用して、RubyとRailsの複数バージョン共存可能なMac環境の構築ができたのですが、疑問な点があり、アドバイスをいただきければと思い、投稿させていただいた次第です。 [行いたいこと:目的] Mac OSX El Capitan に複数のRubyバージョンを切替えれるようにする。また、Railsについてもプロジェクト毎にRailsのバージョンを分けれるようにする。 直近のターゲットは、最新のRuby(2.3.1)をglobalに。Railsチュートリアル学習用にlocalには、Ruby 2.2.1をインストールする。Railsについては、チュートリアル用の環境(sample_app)にRails 4.2.2をインストールする。 [疑問なところ] 以下、記載の手順で行い、環境構築ができ、Rails起動まで確認したのですが、以下、疑問なところがあり、教えていただけませんでしょうか。 1.以下の手順だと、Ruby 2.2.1をlocalに適用するため、sampleディレクトリに適用(手順6.1)し、その後、Railsをローカルにインストールするために、sampleディレクトリにインストール(手順6.4)し、ails new sample_app を行い、sample_appディレクトリにRails環境を構築しました。(詳細は「[実施したこと]」の通りです。) 疑問1. ローカルディレクトリ環境にRailsプロジェクト毎にバージョンを変え、Railsをインストールするためには、ワンクッション(今回の場合で言えばsampleディレクトリ)にRubyと、一時的Rails環境を作成するしかないのでしょうか。sample_appディレクトリだけにする方法はないのでしょうか。 現状、~/sample/sample_appの構成で、sampleディレクトリにはsample_appだけがある状態です。この2階層を、~/sample_appだけの構成にできるようなインストールのやり方はないのでしょうか。 疑問2. 構築した環境にvendor/bundle/ruby/2.2.0 があるのですが、2.2.1バージョンではなく、2.2.0が適用されているのでしょうか。sample_app下でバージョンを確認( ruby -v)すると2.2.1でしたが。 お手数ですが、ご教授いただければ幸甚です。 [実施したこと] 以下の要領で実施しました。長文となり、恐縮ですが、ご参考まで。なお、Rails起動まで確認し、Railsの初期画面が表示されることを確認しました。 1.rbenvのインストール $ brew install rbenv 2.PATHを通す 3.最新バージョン 2.3.1をインストール $ rbenv install 2.3.1 4.デフォルトで利用するバージョンを指定 $ rbenv global 2.3.1 5.Railsチュートリアルで使用するバージョン2.2.1をインストール $ rbenv install 2.2.1 6.ローカルディレクトリにRails環境を構築 6.1 Railsチュートリアル実施のため、ローカル環境にRuby2.2.1を利用のためのディレクトリを作成。 $ mkdir ~/sample $ cd sample 6.2 使用するRubyのバージョン 2.2.1を指定 $ rbenv local 2.2.1 6.3 Bundlerをインストール $ rbenv exec gem install bundler $ rbenv rehash 6.4 Bundlerを使用しRailsアプリケーションを作成するために一時的にrailsをローカルにインストール (1) Gemfile作成(以下のみ指定) gem "rails", "4.2.2" (2) Railsのインストール実施 $ rbenv exec bundle install --path vendor/bundle 6.5 Railsアプリケーションの新規作成 先にbundleでインストールしたgemパッケージを利用し、Railsアプリケーション「sample_app」を作成 (1) Railsアプリケーションの新規作成 $ rbenv exec bundle exec rails new sample_app --skip-bundle (2) Bundlerを使用し一時的に作成したbundlerの環境とローカルのRailsを削除 $ rm -f Gemfile $ rm -f Gemfile.lock $ rm -rf .bundle $ rm -rf vendor 6.6 Railsアプリケーションの環境セットアップ (1) 新規生成したRailsアプリケーションディレクトに移動 $ cd sample_app (2) (Gemfileの編集は必要に応じ別途行うこととし) Railsの標準gemのインストール実施。 $ bundle install --path vendor/bundle 6.7 Railsアプリケーションが問題なく起動されることを確認。 すみませんが、よろしくお願いいたします。
回答: > > 疑問1. ローカルディレクトリ環境にRailsプロジェクト毎にバージョンを変え、Railsをインストールするためには、ワンクッション(今回の場合で言えばsampleディレクトリ)にRubyと、一時的Rails環境を作成するしかないのでしょうか。sample_appディレクトリだけにする方法はないのでしょうか。 > > 現状、~/sample/sample_appの構成で、sampleディレクトリにはsample_appだけがある状態です。この2階層を、~/sample_appだけの構成にできるようなインストールのやり方はないのでしょうか。 > > > bundle install する際に --path=vender/bundle を指定しなければ、rbenv で指定した各バージョンの共通ディレクトリにある gem が利用されますので、プロジェクトごとに gem を入れ直す必要は無いはずです。そういうことで疑問の回答になってますか? > > 疑問2. 構築した環境にvendor/bundle/ruby/2.2.0 があるのですが、2.2.1バージョンではなく、2.2.0が適用されているのでしょうか。sample_app下でバージョンを確認( ruby -v)すると2.2.1でしたが。 > > > 末尾のバージョン(tiny)は無視されているようですので、2.2.0 〜 2.2.x でも .../2.2.0 になります。