🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails

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

Q&A

解決済

3回答

1238閲覧

Ruby on rails 開発環境 RubyのバージョンとGemfileの指定が異なる

mk120851

総合スコア11

Ruby on Rails

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

2グッド

2クリップ

投稿2018/05/01 10:13

前提・実現したいこと

Ruby on railsの開発環境を作りたいと思っています。

$rails server
を行った時に以下のようなエラーが発生しました。

発生している問題・エラーメッセージ

Your Ruby version is 2.3.3, but your Gemfile specified 2.6.0

試したこと

幾つか解決策を調べてみたのですが、下記の処理をしてみたところ特に問題はなさそうでした。

$rbenv versions
system

  • 2.6.0-preview1 (set by /Users/*/MyApp/.ruby-version)

$which ruby
/Users/*/.rbenv/shims/ruby

$which bundle
/Users/*/.rbenv/shims/bundle

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

DrqYuto👍を押しています

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

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

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

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

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

gouf

2018/05/01 10:56

rbenv global で 2.6 に設定してみた場合に変化は見られますか?
mk120851

2018/05/01 11:25

はい、rbenv global 2.6.0-preview1に設定した後も同じエラーが出てしまいます
scivola

2018/05/01 12:44

当該ディレクトリーの .ruby-version の中身はどうなっていますか。
mk120851

2018/05/01 12:52

$ rbenv version 2.6.0-preview1 (set by /Users/**/MyApp/.ruby-version)  のようになってます
asm

2018/05/01 12:53 編集

which railsはshimsに張られてますか? もしくは、bin/railsで改善するのではないでしょうか?
mk120851

2018/05/01 13:07

which rails を実行したところ /usr/local/bin/rails に入っていました。
scivola

2018/05/01 14:15

私の質問は,.ruby-version というファイルの中身がどうなっているか,です。当該ディレクトリーで cat .ruby-version してみてもらえますか。それと,使った Rails のバージョン(Gemfile に書かれている Rails のバージョン)も教えてください。
mk120851

2018/05/02 06:08

ご指摘ありがとうございます。 cat .ruby-versionの結果は2.6.0-preview1、railsのversionはrails (5.2.0)です
guest

回答3

0

bundle exec rails server
もしくは
bin/rails server
で動くはずです

投稿2018/05/01 13:11

asm

総合スコア15149

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

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

mk120851

2018/05/01 13:35

上記2つを実行しましたが、 [IMPORTANT] Don't forget to include the Crash Report log file under DiagnosticReports directory in bug reports. と出てしまいます。
asm

2018/05/01 13:39

preview版ではNokogiriあたりが対応していないかもしれませんね
guest

0

ベストアンサー

Ruby バージョンの決定について

rbenv が Ruby のバージョンを決定するとき,環境変数 RBENV_VERSION が最優先です。
RBENV_VERSION の値は

$ rbenv shell 2.3.3

みたいにしてセットできます。
これを解除するのは

$ rbenv shell --unset

です。

今の場合,Rails アプリのルートに .ruby-version が存在して

2.6.0-preview1

と書かれているにも関わらず

Your Ruby version is 2.3.3, but your Gemfile specified 2.6.0

が出るということは,RBENV_VERSION がセットされているとしか考えられません。
この状態で,当該ディレクトリーで

rb

1$ ruby -v

とやったら 2.3.3 と出るでしょう。
つまり,Ruby 2.3.3 が選ばれてしまうのは,Gemfile の記述や Rails の仕組み以前の問題です。

新しいターミナルで再度実行するか,rbenv shell --unset で解除してから実行すれば,2.6.0-preview1 になると思います。

エラーの原因

次に,なぜ

Your Ruby version is 2.3.3, but your Gemfile specified 2.6.0

が出るかですが,このメッセージのとおり,Gemfile で Ruby のバージョンが 2.6.0 に指定されているはずです。

実際,Ruby 2.6.0-preview1 を使っていて,Rails 5.2.0 で

$ rails new hoge

として生成される Gemfile には,先頭のほうに

rb

1ruby '2.6.0'

という行があります。
こういう行はありませんか?

質問者の Gemfile について

質問者の Gemfile の中身は

rb

1# frozen_string_literal: true 2source "https://rubygems.org" 3git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } 4gem "rails"

とのこと。
また,Rails のバージョンについて「Gemfile内で特にversionの指定はしてないと思います。」とのことですが,不可解です。

ふつうに

$ rails new hoge

とやったら,自動生成される Gemfile には

rb

1gem 'rails', '~> 5.2.0'

のように Rails のバージョンが書かれるはずです。

2.6.0-preview1 を使うことについて

質問者さんは「Ruby 2.6.0-preview1 で Rails を動かしたらどうなるだろう」という実験のつもりで 2.6.0-preview1 をお使いになったのでしょうか。

それならいいのですが,実用にはまだ使えないと思います。

私も追試のため Ruby 2.6.0-preview1 + Rails 5.2.0 で rails new してみましたが,作ったものを動かそうとすると Segmentation fault が出て処理系が落ちました。
つまり,処理系に致命的なバグがあって Rails がそのバグを踏んでいるのではないかと思います。

asm さんの回答に対し,質問者さんが

上記2つを実行しましたが、
[IMPORTANT]
Don't forget to include the Crash Report log file under
DiagnosticReports directory in bug reports.
と出てしまいます。

と書かれていますが,これがたぶんそれ(Segmentation fault)だと思います。

つまり,このときは正しく 2.6.0-preview1 で実行されたのでしょうね。
期待どおり 2.6.0-preview1 で実行されたのは,おそらく bundle exec を付けたり bin/rails したことは関係なくて,環境変数 RBENV_VERSION がセットされていない状態で実行しただけだろうと思います。

というわけで,2.6.0-preview1 の実験でもない限り,Ruby 2.5.1 をお使いになることをお勧めします。

オマケ

Ruby 2.6.0-preview1 + Rails 5.2.0 で

$ rails new hoge

としたときに自動生成される .ruby-version

2.6.0-preview1

ではなく

2.6.0

になります。

これだとダメで,ruby -v とか rails -v とかやろうとすると,エラー

rbenv: version `2.6.0' is not installed

が出ます。

.ruby-version には,rbenv で使用するバージョン表記を書かなければいけないようです。

おそらく rails new コマンドは,RUBY_VERSION の値を .ruby-version に書き込んでいるのでしょうね。
2.6.0-preview1 の場合でも RUBY_VERSION の値は 2.6.0 です。

なお,Gemfile で Ruby バージョンを指定するときに書く

rb

1ruby "2.6.0"

は,rbenv で使うバージョン表記ではなく,RUBY_VERSION の値のようです。
(なので,上記の記述で OK)

投稿2018/05/03 10:10

scivola

総合スコア2108

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

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

asm

2018/05/03 12:05 編集

/usr/local/bin/rails つまりrbenv管理下にないrubyのgemでインストールしたrailsの場合ちょっとだけ勝手が違うんです。 shebangにインストール時に利用したrubyのPATHが書かれるので そっちで起動してしまうのです。
scivola

2018/05/03 11:58

ええと,「rbenv管理下にないrubyのgemでインストールしたrails」がよく理解できないのですが,もう少し教えていただけますか。
asm

2018/05/03 12:03 編集

yumやaptなどでインストールしたgemコマンドでrailsをインストールした場合 #! /usr/local/bin/ruby 等となってしまってrbenvが効かないんです
scivola

2018/05/03 12:19

ええっ! yum や apt で gem コマンドがインストールできるとは知りませんでした。これは厄介ですね。 以下の問題も,もしかするとこれに関係あるのかも? https://teratail.com/questions/121449
asm

2018/05/03 13:04

aptの場合 railsまで入れることもできますね。当然rbenv管理外なので面倒な事になりますが Your Ruby version is ほげ, but your Gemfile specified なんとか エラーの大半はコレだと思ってます。 基本的に現状でシステムのパッケージ管理ツールによってrubyをインストールする事は ご指摘の質問含め問題になりやすく特にRails目的の初心者のハマりやすいポイントですね rbenvインストール→railsインストールとやれば問題ないのですが まぁ初心者ですから、いきなりgem i railsと打ち込んで・・・
mk120851

2018/05/05 05:54

丁寧にご回答ありがとうございます。 Rubyのバージョンを2.5.1にした上で再度一通り試してみたところ、 今度は、 Your Ruby version is 2.3.3, but your Gemfile specified 2.5.1となりましたが、 asmさんのアンサー通りに、 bin/rails serverを実行したところ無事にサーバーの起動まで行うことができました。 この度は本当に有難うございました。
mk120851

2018/05/13 11:32

何度もご質問してしまい申し訳ございません。 amsさんのご回答にある、 つまりrbenv管理下にないrubyのgemでインストールしたrails を解決するにはどうしたらよろしいでしょうか。
asm

2018/05/13 22:53

極論、railsコマンドはプロジェクト作成用であって rails newもしくはbundle installの後はbundle exec railsもしくはbin/railsを使うものです。 http://akataworks.hatenadiary.jp/entry/2015/12/25/170527 のように./bin/railsを優先させるのが個人的に正しいと思う解決法です ~/.rbenv/shims/gem install rails でrailsコマンドをrbenv管理下でインストールする方法もありますが 解決するかはあなたの環境次第ですね
guest

0

... Gemfile specified ...

Gemfile の内容を提示して欲しいです。
rails の version を指定していませんか?

投稿2018/05/01 12:21

katoy

総合スコア22324

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

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

katoy

2018/05/01 12:51

Gemfile.lock では、 rails の version はどうなっていますか? gemfile.lock を削除そてから、 bundle install してみてください。 あるいは けさずに bundle update してみてください。
mk120851

2018/05/01 13:36

bundle updateをしてみましたが依然として Your Ruby version is 2.3.3, but your Gemfile specified 2.6.0 が出てきてしまいます。
katoy

2018/05/01 14:10

Gemfile.lock 中も rails の version は? Gemfile.lock を削除してヵら bundle insltall した結果は?
mk120851

2018/05/02 06:14

Gemlock内のrails の version はrails (5.2.0)でした。 Gemfile.lock削除後、 bundle insltallした結果もエラーはかわらずです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問