Ruby-on-Rails:无法设置正确的Ruby版本

问题描述

亲爱的社区。​​ p>

这是一个奇怪的人,我自己也无法弄清楚。

我即将将Ruby-on-Rails应用程序部署到生产服务器。我喜欢像您一样在开发和生产之间保持所有版本的一致性。

在我的Gemfile中,我将Ruby版本设置为2.7.1(正确),并且在开发中我安装了2.7.1,并将该版本本地用于该特定项目。一切正常! -这是条目:

宝石文件

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.7.1'

# Bundle edge Rails instead: gem 'rails',github: 'rails/rails'
gem 'rails','~> 6.0.3','>= 6.0.3.2'
...

问题:

在生产中,我安装并使用(通过rbenv)Ruby 2.7.1。并且我确认该版本已安装并正在使用中!但是,当它尝试迁移我的数据库或为此执行任何其他任务时,它会输出以下内容

Your Ruby version is 2.7.0,but your Gemfile specified 2.7.1

我什至没有安装2.7.0。因此,出于此原因,我在生产环境中编辑了Gemfile来运行测试。为了进行测试,我将红宝石版本设置为2.7.0,然后运行另一个启动机架的命令。现在的消息是:

Your Ruby version is 2.7.1,but your Gemfile specified 2.7.0

正在发生什么?!我以前从未见过或看到过类似的问题。任何帮助深表感谢!谢谢!

以下是环境详细信息:

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.1 LTS (Focal Fossa)"

ruby -v
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin19]

$ rails -v
Rails 6.0.3.2

$ bundle -v
Bundler version 2.1.4

解决方法

我发现最好的解决方案是从您的ruby版本管理器中卸载所有版本的ruby(不熟悉rbenv,但是您应该能够列出所有已安装的版本,然后逐个卸载您不需要的版本,直到仅如果需要多个版本,则最好设置一个脚本,该脚本可让您快速切换或设置隔离的开发环境(主要是虚拟机),从而可以确保它仅具有所需的版本。

之后,它可能会正常工作,或者您将显示一条错误消息,可能会帮助您确定问题的根本原因。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...