質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

2624閲覧

RubyとRailsの複数バージョン共存可能なMac環境構築について

asn

総合スコア20

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

1グッド

1クリップ

投稿2016/11/12 11:19

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アプリケーションが問題なく起動されることを確認。

すみませんが、よろしくお願いいたします。

ikuwow👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

疑問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 になります。

投稿2016/11/12 23:41

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

asn

2016/11/13 00:19

回答ありがとうございます。返信遅れすみません。「疑問2」はわかりました。ありがとうございます。安心しました。「疑問1」ですが、目的は、「プロジェクト毎にRuby、Railsのバージョンを分けたい」ということなので、回答いただいた内容だとMac全体で共有される領域にインストールされることになると理解していますが、違いますでしょうか。(オプション「--path vendor/bundle」を付けることによりgemは、アプリケーション限定の領域(vendor/bundleディレクトリ)にインストールされると理解しています。)意図がうまく表現できていないようでしたらご容赦願います。また、私の認識違いでしたら教えていただければと思います。よろしくお願いします。
退会済みユーザー

退会済みユーザー

2016/11/13 00:26

プロジェクトごとに Rails バージョン、各 gem バージョンを指定する役割が Gemfile です。 どこに gem を入れるか、は --path vendor/bundle で指定しますが、『どれを』使うかと『どこを』使うか、は別の話です。
asn

2016/11/13 05:22

回答ありがとうございます。ということは、project1とproject2で異なるバージョンのRailsで開発する場合も、同一のインストール先にgemをインストールしても干渉等による問題はない。そのため、--path=vender/bundle を指定し、インストール先をプロジェクト毎に分けなくても問題はない、との理解でよいでしょうか。
退会済みユーザー

退会済みユーザー

2016/11/13 05:28

それぞれのプロジェクトが必要とする gem が、共有されるパスで揃っているのなら問題ありません。ただ、同じ名称の gem でもバージョンを指定する場合があると思いますし、共有されるパスを自分が管理できない場合もあると思います。そういう場合には vender/bundle/ 下に閉じ込める必要があるでしょう。 要は、要件次第だということです。
asn

2016/11/13 08:57

回答ありがとうございます。了解です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問