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

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

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

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

バージョン管理

バージョン管理はコンピューター上にファイルとして格納されているドキュメント・プログラム・その他の情報の変更履歴等を管理するものです

Q&A

1回答

2553閲覧

Mac Rails開発 localhostとのRubyのバージョンが合わなくて困っています。

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

バージョン管理

バージョン管理はコンピューター上にファイルとして格納されているドキュメント・プログラム・その他の情報の変更履歴等を管理するものです

0グッド

0クリップ

投稿2018/08/25 09:35

編集2022/01/12 10:55

Rails初心者です。
(基本の文法を抑えて、Progateというサイトでチュートリアルをこなし、これからサンプルアプリを作ってみようという段階です。)

Rails開発でRubyのバージョン管理に関する質問です。

#具体的な問題点
コマンドラインで確認できるRubyのバージョンと、http://localhost:3000/で確認できるRubyのバージョンが異なってしまいます。

その解決方法を質問させていただきたいです。

コマンドラインで確認した結果

lang

1MacBookpuro:MyApp ●●●$ ruby -v 2ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17] 3MacBookpuro:MyApp ●●●$ rails -v 4Rails 5.2.1

localhost:3000で確認した結果
イメージ説明
2.3.7はSystemのRubyのバージョンです。

#これまでにやったこと
##RubyとRailsのインストール
サイトを参考にして、RubyとRailsをインストールしました。
参考サイト:https://qiita.com/shinkuFencer/items/3679cfd966f6a61ccd1b

  • homoebrewをインストール
  • rbenvをインストール
  • rbenvを使って確認できた最新バージョン(ruby 2.5.1)をインストール
  • globalでrubyのバージョン切り替え

lang

1MacBookpuro:desktop ●●●$ ruby -v 2ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin17]
  • bundlerをインストール

##Railsアプリのディレクトリの作成
参考サイト:https://gabekore.org/mac-ruby-rails-project

  • desktopでアプリのディレクトリを作成
  • localでrubyのバージョン指定

lang

1rbenv local 2.5.1

lang

1MacBookpuro:MyApp ●●●$ more .ruby-version 22.5.1
  • bundle initでGemfileファイルを作成
  • Gemfileの中身を書き換え、Railsインストール

このときに間違えて、

bundle install --path=vendor/bundle

が推奨されているところを、

bundle install

でインストールしてしまいました。

追加でbundle install --path=vendor/bundleの方のコマンドも実行しました。

これだと元々入っているSystemのRubyに変更が保存されるという記述をどこかで見まして、このコマンドがよくなかったのかと思っています。

(もしかしたら、bundle installを打ったときに、うまくrubyのバージョンが切り替わってなく、そこに変更が保存されておかしくなったとかでしょうか。。。)

それが原因なのか、アプリディレクトリのvendorフォルダ > bundleフォルダ > Rubyフォルダの中には、2.3.0という名前のフォルダがあります。

このSystemのRubyに変更を与えてしまったときの、変更の削除の仕方もご存知のかたいらっしゃいましたら、教えていただきたいです。

何度か新しくアプリのディレクトリを作ってトライしてみたのですが、結果がかわらなかったので、質問させてください。

また、rails sを打ったときにはこんな結果が出ます。

lang

1MacBookpuro:App ●●●$ rails s 2=> Booting Puma 3=> Rails 5.2.1 application starting in development 4=> Run `rails server -h` for more startup options 5Puma starting in single mode... 6* Version 3.12.0 (ruby 2.3.7-p456), codename: Llamas in Pajamas 7* Min threads: 5, max threads: 5 8* Environment: development 9* Listening on tcp://0.0.0.0:3000 10Use Ctrl-C to stop 11Started GET "/" for 127.0.0.1 at 2018-08-25 17:30:03 +0800 12Processing by Rails::WelcomeController#index as HTML 13 Rendering /Library/Ruby/Gems/2.3.0/gems/railties-5.2.1/lib/rails/templates/rails/welcome/index.html.erb 14 Rendered /Library/Ruby/Gems/2.3.0/gems/railties-5.2.1/lib/rails/templates/rails/welcome/index.html.erb (3.5ms) 15Completed 200 OK in 35ms (Views: 7.4ms | ActiveRecord: 0.0ms)

よろしくお願いします。

#【追記】現状のまとめ
testというRailsアプリディレクトリには、こんなファイルが入っています。

lang

1MacBook-puro:test ●●●$ ls -la 2total 40 3drwxr-xr-x 9 ●●● staff 288 8 25 17:22 . 4drwx------+ 9 ●●● staff 288 8 25 17:07 .. 5-rw-r--r--@ 1 ●●● staff 6148 8 26 14:06 .DS_Store 6drwxr-xr-x 3 ●●● staff 96 8 25 17:09 .bundle 7-rw-r--r-- 1 ●●● staff 6 8 25 17:08 .ruby-version 8drwxr-xr-x 22 ●●● staff 704 8 25 17:23 App 9-rw-r--r--@ 1 ●●● staff 153 8 25 17:09 Gemfile 10-rw-r--r-- 1 ●●● staff 2911 8 25 17:12 Gemfile.lock 11drwxr-xr-x 4 ●●● staff 128 8 25 17:18 vendor

lang

1MacBook-puro:test ●●●$ more .ruby-version 22.5.1

rbenv local 2.5.1でrubyのバージョンを設定しました。きちんと.ruby-versionファイルはできてはいるのですが。。。

関係ないと思いますが、参考までに使用しているMacは『MacBook Pro (Retina, 13-inch, Late 2013)』、OSは『High Sierra』です。

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

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

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

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

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

guest

回答1

0

Railsアプリの直下に .ruby-version がありますか?
もし無い場合は、Railsアプリの直下にcdした上で rbenv local 2.5.1 で作成してください。

.ruby-versionが正しいことを確認できたら、続いてRailsアプリ直下で bundle install --path vendor/bundle をしてGemをインストールしてください。

Gemのインストールが完了したら、引き続きRailsアプリ直下で bin/rails s でRailsサーバを起動してみてください。

※ いくつか推測です。間違っていたらすいません。

投稿2018/08/26 03:24

mogulla3

総合スコア60

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

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

退会済みユーザー

退会済みユーザー

2018/08/26 06:20

mogulla3さん、回答ありがとうございます。 Railsアプリの直下に .ruby-version はあります。また、bundle install --path vendor/bundleも行いました。 最後のbin/rails sは理解できませんでした。すみません!いつもはrails sでサーバーを起動していました。試しにこのコマンドを打ってみると、 -bash: bin/rails: No such file or directory と出ました。 追記にも現状をまとめましたので、見ていただけると幸いです。
mogulla3

2018/08/26 13:07

追記ありがとうございます。 追記を見ていて、「Railsアプリ」の認識が違っているように思いました。 通常、Railsアプリは以下のようにして作成します。 ``` # sample-appというRailsアプリを作成する $ rails new sample-app ``` 上のコマンド実行後に生成される `sample-app` 以下が「Railsアプリの直下」です。 Railsのバージョンによって多少異なりますが、大体次のような構成になるはずです。 ``` $ cd sample-app $ ls -l . total 56 -rw-r--r-- 1 xxx staff 2196 Aug 26 21:50 Gemfile -rw-r--r-- 1 xxx staff 5287 Aug 26 21:51 Gemfile.lock -rw-r--r-- 1 xxx staff 374 Aug 26 21:50 README.md -rw-r--r-- 1 xxx staff 227 Aug 26 21:50 Rakefile drwxr-xr-x 10 xxx staff 340 Aug 26 21:50 app drwxr-xr-x 9 xxx staff 306 Aug 26 21:51 bin drwxr-xr-x 16 xxx staff 544 Aug 26 21:50 config -rw-r--r-- 1 xxx staff 130 Aug 26 21:50 config.ru drwxr-xr-x 3 xxx staff 102 Aug 26 21:50 db drwxr-xr-x 4 xxx staff 136 Aug 26 21:50 lib drwxr-xr-x 3 xxx staff 102 Aug 26 21:50 log -rw-r--r-- 1 xxx staff 68 Aug 26 21:50 package.json drwxr-xr-x 9 xxx staff 306 Aug 26 21:50 public drwxr-xr-x 3 xxx staff 102 Aug 26 21:50 storage drwxr-xr-x 11 xxx staff 374 Aug 26 21:50 test drwxr-xr-x 5 xxx staff 170 Aug 26 21:50 tmp drwxr-xr-x 3 xxx staff 102 Aug 26 21:50 vendor ``` ここで、`bin/rails s`とすればおそらく期待通りのバージョンでRailsが起動すると思います。試してみてください。 ※ `bin/rails s`と言ったのは、Railsアプリ直下にいることが明確になるからで、`rails s`としても起動はします。この辺の詳細については以下の記事が参考になるので、気になりましたら見てもらえればと思います。 https://qiita.com/jnchito/items/c5a0848144203dce6e26
退会済みユーザー

退会済みユーザー

2018/08/27 09:10

ご返信ありがとうございます! たしかにRailsアプリ直下の認識が間違っておりました。ご指摘ありがとうございます。 今一度はじめからやり直して見ました。しかし、結果的にまだうまくいきません。 ・デスクトップにAppディレクトリ作成 ・Appにcdしてから、rails new sample-app ・sample-appにcdしてから、rbenv local 2.5.1 ・.ruby-version の中身は2.5.1になっていることを確認 ・ruby -vでも2.5.1と出ること確認 ・bundle install --path vendor/bundle ・rails s ・lovcalhostにアクセスするも、rubyのバージョンは2.3.7のまま。 ちょっとファイルの中身をのぞいてみようと思って、sample-app直下(Railsアプリ直下)のgemfileを見てみると、ruby '2.3.7'となっていました。 ここが問題だなと思い、2.5.1に書き直すも、bundle install --path vendor/bundleを実行したところで、『Your Ruby version is 2.3.7, but your Gemfile specified 2.5.1』と怒られてしまいました。 参考までに、どのディレクトリ(デスクトップ、アプリ)でrbenv versionsをしても、2.5.1が洗濯されています。また、ruby -vを実行しても、2.5.1と出ます。 何か思いつくことがあれば、教えていただけると幸いです。
退会済みユーザー

退会済みユーザー

2018/08/27 09:16

以前にbundle installのみで実行してしまったのがまずかったのでしょうか。(質問中「Railsアプリのディレクトリの作成 」の見出しに記載している内容です。)
mogulla3

2018/08/27 15:44

むむ..、なるほどです。 bundle installのみで実行してしまったというのは関係しているかもですね。Ruby2.3.7の環境でinstallしたrailsが使われているように見えます。 一旦、以下を実行してみるとどうでしょう? ``` # ruby 2.5.1 をグローバルに設定する $ rbenv global 2.5.1 $ rbenv rehash # railsをインストール $ gem install rails # sample-appを再作成してRailsアプリ直下へ移動 $ rails new sample-app $ cd sample-app # 「bin/rails」で起動 $ bin/rails s ```
退会済みユーザー

退会済みユーザー

2018/08/28 07:38

返信ありがとうございます! 提案いただいた方法でためしてみました。 結果を先に申し上げますと、失敗でした。 同様に、Gemfile内のrubyの指定が2.3.7となっていました。 .ruby-versionの中身も2.3.7でした。 またbin/rails sだと、'rbenv: version `ruby-2.3.7' is not installed (set by /Users/●●●/desktop/test/sampleapp/.ruby-version)' となり、rails sだと起動できました。(ruby2.3.7でですが。) やはり、bundle installのみで実行してしまったというのは関係していそうな気がしますね。 もうアンインストールから、再インストールをしようと思います。 また報告にきます。ありがとうございます!
uasi

2018/08/30 05:44 編集

> 同様に、Gemfile内のrubyの指定が2.3.7となっていました。 > .ruby-versionの中身も2.3.7でした。 `rails new sample-app` で生成した Gemfile で2.3.7が指定されているということは、システムの Ruby にインストールされた rails コマンドが使われていますね。また `bundle` コマンドもシステムのものである可能性があります。 `rbenv exec` で明示的に rbenv の Ruby を使うとよさそうです。 ``` $ rbenv global 2.5.1 $ rbenv rehash $ rbenv exec ruby -v # 2.5.1 であることを確認する $ rbenv exec gem install bundler $ rbenv exec gem install rails $ rbenv exec rails _5.2.1_ new sample-app # RubyGems でバージョン違いの同名のコマンドを複数インストールしてある場合、 # 第1引数に _version_ 引数を与えると指定のバージョンを選択できる ```
mogulla3

2018/08/29 05:06

Take_wuwさん あまり力になれずすいませんでした。 uasiさんが書いているように、システムのRubyが使われてしまっているように思いますのでそこを突破できればバージョンのズレは解消されると思います。 `rbenv exec`の存在は自分は知りませんでした(uasiさん、コメントありがとうございます)
退会済みユーザー

退会済みユーザー

2018/08/30 13:14

Homebrewから色々アンインストールしたところ、またおかしくなったので、Macを初期化しました。(使いはじめたばっかでしたので) いま再度新しく環境構築をしようとしているところです。
退会済みユーザー

退会済みユーザー

2018/09/13 05:29 編集

uasiさん、コメントありがとうございます! 返信が遅くなり、すみません。 `rbenv exec` で明示的に rbenv の Ruby を使うことが出来るんですね。はじめて知りました。ありがとうございます。
退会済みユーザー

退会済みユーザー

2018/08/30 13:22

mogulla3さん とんでもないです。丁寧に何度も返信いただき感謝しております。
退会済みユーザー

退会済みユーザー

2018/08/30 13:27

Railsそもそもの質問なのですが、ネット記事をみていると、RailsアプリごとにRailsをインストールするというような記述を見かけます。 しかし、例えばホームディレクトリで 'rails -v' としても'Rails 5.2.1'と帰ってきます。Railsはどこに保存されていて、どう機能しているのかイマイチ掴めておりません。 ちょっと前までは、rubyなどと同じように、MacにRailsがインストールされて、それをアプリディレクトリから参照するのかと考えていました。 RailsもGemということはわかるのですが、イマイチぴんと来ておりません。 イメージのようなものがあれば教えていただけると、ありがたいです。
退会済みユーザー

退会済みユーザー

2018/08/30 15:18

連投になって申し訳ないです。 Macの初期化からはじめて、再度やり直した結果、きちんとruby 2.5.1で起動することができました。 mogulla3さん、親切に教えて頂いたのに、最終的に強引な解決方法となってしまいすみません。 usaiさん、コメントいただいたのに、コメントに気づく前にMacリセットしてしまいました。`rbenv exec` 勉強になりました、ありがとうございます!
uasi

2018/09/03 03:01 編集

> Railsはどこに保存されていて、どう機能しているのかイマイチ掴めておりません。 Rails をインストールするとき `gem install rails` を実行したと思います。このコマンドは現在有効な Ruby (システムのものまたは rbenv でインストールしたもの)の配下に最新の Rails gem をインストールします。ホームディレクトリで `rails` すると使われるのはこの Rails です。 Ruby 配下には複数バージョンの gem を並行してインストールすることができ、 gem でインストールしたコマンドを実行すると常に最新バージョンの gem が選ばれて実行されます。 `rails new foo_project` を実行すると Gemfile を含むプロジェクトが生成され、自動的に `bundle install` も実行されます。 `bundle install` は Gemfile で列挙された gem (Rails gem も含む)を現在有効な Ruby の配下にインストールし、それらのバージョンを Gemfile.lock に記録します。Rails アプリごとに Rails をインストールするというのはこのことです。(ちなみに、 `bundle install --path=vendor/bundle` とすると gem をプロジェクト内の vendor/bundle ディレクトリ配下にインストールすることもできます。 Ruby 配下をクリーンに保ちたいとき有効です。) プロジェクト内で `bundle exec rails` を実行すると、最新バージョンの Rails ではなく Gemfile.lock で固定されたバージョンの Rails が選ばれて実行されます。単に `rails` を実行すると通常通り最新バージョンの Rails が実行されるのですが、 Rails 固有の機能により、 `rails` は現在のディレクトリに `bin/rails` があればそれを実行します。さらに `bin/rails` は `bundle exec rails` 相当の動作をします。つまりプロジェクト内であれば `rails` も Gemfile.lock で固定されたバージョンの Rails を実行します。 まとめると: - `gem install rails` は最新の Rails を Ruby 配下にインストールする - `bundle install` は Gemfile で指定されたバージョンの Rails を Ruby 配下にインストールする - `rails` は最新バージョンの Rails を実行する - `bundle exec rails` は Gemfile.lock で固定されたバージョンの Rails を実行する - 特例としてプロジェクト内では `rails` は Gemfile.lock で固定されたバージョンの Rails を実行する 詳しい挙動についてはこれらの記事が参考になります。 https://techracho.bpsinc.jp/hachi8833/2016_08_24/25037 https://qiita.com/jnchito/items/c5a0848144203dce6e26
asm

2018/09/03 03:21

ちょっと間違ってます。。。 railsによって実行されるコマンドは railsコマンドインストール時のruby bin/rails になってしまうので bin/railsをシェルから実行した場合 /usr/bin/env ruby bin/rails とは別の結果になってしまいます。
uasi

2018/09/03 04:21

ご指摘ありがとうございます。プロジェクト内でコマンドを実行した場合、 - `rails` →最初に `gem install rails` したとき有効だった Ruby 配下の Rails を実行 - `bin/rails` →現在有効な Ruby 配下の Rails を実行 なので、有効な Ruby を切り替えると挙動が異なってくるということですね。
退会済みユーザー

退会済みユーザー

2018/09/13 05:29 編集

uasiさん、回答ありがとうございます! お返事が遅れ、申し訳ございません。 Railsのインストール先や、その挙動についてよくわかりました! RailsはRuby配下にインストールされ、アプリ内にもインストールできる。 その呼び出しの優先順位が、コマンドやGemfile.lockの内容で変わるんですね。 とても勉強になりました!ありがとうございます。
退会済みユーザー

退会済みユーザー

2018/09/13 05:31

asmさん、コメントありがとうございます! uasiさんのコメントもあわせ、実行するRailsについて理解できました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問