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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

14324閲覧

自分のrubyのバージョンとGemfileのrubyのバージョンが違うと言われる

takamaru_ss

総合スコア6

Ruby

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

Ruby on Rails

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

0グッド

1クリップ

投稿2021/04/11 16:49

rubyとrailsのバージョンを更新しようとした結果、rails sなどを行うとrubyのバージョンが違うという旨のエラーが出てしまいます

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

Warning: the running version of Bundler (2.1.4) is older than the version that created the lockfile (2.2.16). We suggest you to upgrade to the version that created the lockfile by running `gem install bundler:2.2.16`. Your Ruby version is 2.6.3, but your Gemfile specified 3.0.1

###行った更新作業
0. rbenvでruby3.0.1をインストール
0. ホームディレクトリでrbenv global 3.0.1を、railsアプリのディレクトリでrbenv local 3.0.1を実行
0. .brash_profileに追記を行いパスを通す
0. source ~/.bash_profileで適用

この段階でbundle installしようとすると

Your Ruby version is 3.0.1, but your Gemfile specified 2.6.3

と言われます(Your Ruby versionが3.0.1(=新しいもの)になっています)

  1. その後Gemfile.lockを削除しGemfileのruby、railsのバージョンを書き換え
  2. bundle install実行、特にエラーなく完了、Gemfile.lockのrubyやrailsのバージョンも新しいものになっていることを確認
  3. rails app:update、rails s、rails cで最初に記載したエラーメッセージ
Warning: the running version of Bundler (2.1.4) is older than the version that created the lockfile (2.2.16). We suggest you to upgrade to the version that created the lockfile by running `gem install bundler:2.2.16`. Your Ruby version is 2.6.3, but your Gemfile specified 3.0.1

が出るようになる

  • gem install bundler:2.2.16を実行しろと言われているので実行、しかし実行してもエラー文は変わらず

bundle installする前には自分のrubyのバージョンが3.0.1でGemfileが2.6.3だと怒られたのにGemfileを書き換えると逆になってしまいます。

各コマンドでの確認

  • ruby -v

ruby 3.0.1

  • rbenv versions

2.6.3
*3.0.1(set by /Users/---/rails/---/.ruby-version)

  • which ruby

/Users/---/.rbenv/shims/ruby

  • Gemfileの中身(自分で書いたもの)

ruby '3.0.1'
gem 'rails', '~> 6.1.3'

  • Gemfile.lock

RUBY VERSION
ruby 3.0.1p64
BUNDLED WITH
2.2.16

  • bundle install、bundle update

エラーなく完走する

  • gem environment

RUBYGEMS VERSION: 3.2.15
RUBY VERSION: 3.0.1
をはじめ、2.6.3という記載はなし

###わからないところ
自分が確認できる範囲は全てrubyのバージョンが3.0.1となっているのに2.6.3だと怒られてしまいます。
Gemfileを書き換える前後で言われていることが真逆になる理由もわからないです。

###参考にした記事

  • 永久保存版!?伊藤さん式・Railsアプリのアップグレード手順

https://qiita.com/jnchito/items/0ee47108972a0e302caf

  • 既存のRailsアプリのRubyバージョンアップしてみた

https://qiita.com/mi0/items/f85f2f2362b5c6636158

  • Ruby Error[Your Ruby version is 2.6.3, but your Gemfile specified 2.6.5]

https://qiita.com/ryu1sazae/items/ee308dd1c11faf6f3eb0

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

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

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

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

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

winterboum

2021/04/11 22:50

.ruby-version がありませんか?
takamaru_ss

2021/04/11 23:04

winterboumさん ありがとうございます。 .ruby-versionを叩くとホームディレクトリでもアプリのディレクトリでも zsh: command not found: .ruby-version と表示されてしまいます。
guest

回答1

0

ベストアンサー

$ bundle exec rails s

でも同じエラーが出ますか?

投稿2021/04/11 18:39

mather

総合スコア6759

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

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

takamaru_ss

2021/04/11 21:45

matherさん ありがとうございます。 bundle exec rails s ではエラーは出ずにサーバーが起動しました。 となるとアプリのrubyやrailsのバージョンは更新できたもののPC本体の方は更新できていないということでしょうか。 ホームディレクトリでruby -vを叩いてもバージョンは3.0.1と表示されます。
mather

2021/04/12 04:02

gem install rails が既に実行されていて、素の rails コマンドは bundle でインストールしたものとは別のものが起動しているのでしょう。 プロジェクト内の Gemfile でインストールしたツールやコマンドを実行したい場合は bundle exec をつけて実行するようにしましょう。
takamaru_ss

2021/04/12 11:34

matherさん PC本体のrailsのバージョンがアプリと別だということが原因ということなので、ホームディレクトリで gem install rails -v 6.1.3 を叩いてPC本体のrailsのバージョンも新しくしたところ、素のrailsコマンドでも問題なく動くようになりました。 ただ今回execでプロジェクトの設定をPCと分けることの意味を勉強できたので今後はそこを区別して考えるよう気をつけます。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問