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

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

ただいまの
回答率

90.75%

  • Ruby on Rails

    6723questions

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

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

解決済

回答 3

投稿

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

mk120851

score 3

 前提・実現したいこと

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/ツールのバージョンなど)

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

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • mk120851

    2018/05/01 22:07

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

    キャンセル

  • scivola

    2018/05/01 23:15

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

    キャンセル

  • mk120851

    2018/05/02 15:08

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

    キャンセル

回答 3

+2

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/01 22:35

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

    キャンセル

  • 2018/05/01 22:39

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

    キャンセル

checkベストアンサー

+1

 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 がセットされているとしか考えられません。
この状態で,当該ディレクトリーで

$ 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 には,先頭のほうに

ruby '2.6.0'

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

 質問者の Gemfile について

質問者の Gemfile の中身は

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

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

ふつうに

$ rails new hoge

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

gem '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 バージョンを指定するときに書く

ruby "2.6.0"

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/03 20:47 編集

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

    キャンセル

  • 2018/05/03 20:58

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

    キャンセル

  • 2018/05/03 21:02 編集

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

    キャンセル

  • 2018/05/03 21:19

    ええっ! yum や apt で gem コマンドがインストールできるとは知りませんでした。これは厄介ですね。

    以下の問題も,もしかするとこれに関係あるのかも?
    https://teratail.com/questions/121449

    キャンセル

  • 2018/05/03 22:04

    aptの場合 railsまで入れることもできますね。当然rbenv管理外なので面倒な事になりますが
    Your Ruby version is ほげ, but your Gemfile specified なんとか
    エラーの大半はコレだと思ってます。

    基本的に現状でシステムのパッケージ管理ツールによってrubyをインストールする事は
    ご指摘の質問含め問題になりやすく特にRails目的の初心者のハマりやすいポイントですね

    rbenvインストール→railsインストールとやれば問題ないのですが
    まぁ初心者ですから、いきなりgem i railsと打ち込んで・・・

    キャンセル

  • 2018/05/05 14:54

    丁寧にご回答ありがとうございます。

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

    この度は本当に有難うございました。

    キャンセル

  • 2018/05/13 20:32

    何度もご質問してしまい申し訳ございません。
    amsさんのご回答にある、

    つまりrbenv管理下にないrubyのgemでインストールしたrails

    を解決するにはどうしたらよろしいでしょうか。

    キャンセル

  • 2018/05/14 07: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管理下でインストールする方法もありますが
    解決するかはあなたの環境次第ですね

    キャンセル

0

... Gemfile specified  ...

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/01 21:24

    Gemfileの内容は以下です、
    # frozen_string_literal: true
    source "https://rubygems.org"
    git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
    gem "rails"

    Gemfile内で特にversionの指定はしてないと思います。

    キャンセル

  • 2018/05/01 21:51

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

    キャンセル

  • 2018/05/01 22:36

    bundle updateをしてみましたが依然として

    Your Ruby version is 2.3.3, but your Gemfile specified 2.6.0

    が出てきてしまいます。

    キャンセル

  • 2018/05/01 23:10

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

    キャンセル

  • 2018/05/02 15:14

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

    キャンセル

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

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    rbenvを使用したrailsプロジェクトでrails gができない

    rbenvでruby2.2.4を使用しています。 rails で新しいコントローラーを作成しようとすると、 $ rails g contoller newcontrolle

  • 解決済

    ローカル環境のRails5.0.0が立ち上がらない

    前提 本番サーバは問題なく動作中で、ローカルの開発環境でのみrailsが起動しません。 発生している問題・エラーメッセージ bundle exec rails sだと下記

  • 解決済

    Ruby のバージョンアップについて

    rbenvでrubyのバージョンupをしたのですが、切り替わらない為 rubyのバージョンアップの方法を ご教授頂ければと存じます。 やりたい事 rubyバージョンアップ ru

  • 解決済

    rbenv でbundle installが実行できない

    Macを用いてローカル環境でrailsでアプリケーション開発をしようとしているのですが, bundle installで躓いてしまいました。 $ rbenv exec bund

  • 解決済

    bundle installでエラーが出てします。nokogiriによるエラー

    macOS High Sierra バージョン 10.13.2 先日質問しましたが、3日目でまだ解決出来ません>< 全く作業が進まず、心折れそうなので再度質問させてください..

  • 解決済

    rails内のrubyのversion指定

    ruby 2.5.0、rails 5.1.5を利用しています。 Gemfile内に以下の通りruby '2.5.0'と指定し、 rubyのversionも添付画像の通り'2.5.0

  • 解決済

    rbenvでrubyが切り替わらない

     前提・実現したいこと rbenv install 2.5.1と実行してrbenv local 2.5.1としてruby -vを確認しても切り替えができてません $ruby -

  • 受付中

    bundlerが古いと言われる

    railsコマンドを実行しようとすると、何個も抜けてるgemがあり、次々とgemのインストールの指示がでます。 よく見るとbundle installした際に Warnin

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

  • Ruby on Rails

    6723questions

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