Ruby バージョンの決定について
rbenv が Ruby のバージョンを決定するとき,環境変数 RBENV_VERSION
が最優先です。
RBENV_VERSION
の値は
みたいにしてセットできます。
これを解除するのは
です。
今の場合,Rails アプリのルートに .ruby-version
が存在して
と書かれているにも関わらず
Your Ruby version is 2.3.3, but your Gemfile specified 2.6.0
が出るということは,RBENV_VERSION
がセットされているとしか考えられません。
この状態で,当該ディレクトリーで
とやったら 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 で
として生成される Gemfile
には,先頭のほうに
という行があります。
こういう行はありませんか?
質問者の 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の指定はしてないと思います。」とのことですが,不可解です。
ふつうに
とやったら,自動生成される 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 で
としたときに自動生成される .ruby-version
は
ではなく
になります。
これだとダメで,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 バージョンを指定するときに書く
は,rbenv で使うバージョン表記ではなく,RUBY_VERSION
の値のようです。
(なので,上記の記述で OK)