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

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

ただいまの
回答率

90.51%

  • Ruby

    9429questions

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

  • Ruby on Rails 4

    2544questions

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

  • MacOS(OSX)

    2353questions

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

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

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 985

asn

score 14

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

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/13 09:19

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

    キャンセル

  • 2016/11/13 09:26

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

    キャンセル

  • 2016/11/13 14:22

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

    キャンセル

  • 2016/11/13 14:28

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

    要は、要件次第だということです。

    キャンセル

  • 2016/11/13 17:57

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

    キャンセル

同じタグがついた質問を見る

  • Ruby

    9429questions

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

  • Ruby on Rails 4

    2544questions

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

  • MacOS(OSX)

    2353questions

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