Ruby on rails 如何运行特定版本的rake

Ruby on rails 如何运行特定版本的rake,ruby-on-rails,Ruby On Rails,背景: 每当我在旧项目中运行rake时,我都会出错。(未初始化的常量Rake::DSL) 讨论中的rails项目是一个老项目,它是从Rails2.1开始的(我想),从那时起,我已经在笔记本电脑上更新了几次操作系统,并在运行过程中进行了更新 现在,只要我将rails_GEM_版本设置为2.3.5,rails应用程序就可以正常工作。我不确定该应用程序是否已完全更新到Rails 2.3.5 在我的旧项目中没有GEM文件 如果我创建一个全新的rails项目(并取消设置rails\u GEM\u版本),

背景:

  • 每当我在旧项目中运行rake时,我都会出错。(未初始化的常量Rake::DSL)
  • 讨论中的rails项目是一个老项目,它是从Rails2.1开始的(我想),从那时起,我已经在笔记本电脑上更新了几次操作系统,并在运行过程中进行了更新
  • 现在,只要我将rails_GEM_版本设置为2.3.5,rails应用程序就可以正常工作。我不确定该应用程序是否已完全更新到Rails 2.3.5
  • 在我的旧项目中没有GEM文件
  • 如果我创建一个全新的rails项目(并取消设置rails\u GEM\u版本),rake运行良好
我的问题:为了排除故障,我想尝试更新版本的rake。我想知道如何强制使用一个特定的版本,因为我似乎安装了多个版本

有关我的环境的信息:

$ gem list rake

*** LOCAL GEMS ***

rake (0.9.2.2, 0.9.2, 0.8.7, 0.8.3)


$ rake --version
rake, version 0.8.7
因此,它看起来正在采用0.8.7版本

所有联机帮助文件似乎都告诉我在GEM文件中指定rake版本,但在这个项目中没有。(也许它早于文件时代?)

如果我完全取消设置RAILS\u GEM\u环境变量,并尝试运行rake,我会得到:

rake aborted!
can't activate rails (= 2.3.5, runtime) for [], already activated rails-3.2.8 for []

我以前的项目中没有一个环境配置文件设置了该变量。

您可以使用此选项运行特定于rake的版本

bundle exec rake

更多详细信息请参见-,

您是否尝试过下划线解决方案

例如:

rake _0.9.2_

您可以卸载当前版本的rake,并使用与以下类似的命令安装另一个所需版本:

gem uninstall rake 12.3.1
gem install rake 10.5.0
(注意:您可能需要以sudo身份运行才能获得权限)

我遇到一个问题,在尝试安装rake 10.5.0时收到以下错误:

Could not find a valid gem '0.8.7' (>= 0) in any repository
我通过向文件中添加以下行解决了此问题:


这可能会有所帮助。你试过下划线解决方案吗?我刚试过下划线解决方案,但当我这么做时:$rake\u 0.9.2\u--version,它仍然说它使用的是0.8.7。我做了一点挖掘,我想我明白为什么下划线方法对我不起作用。显然,对于可执行gem(比如rake),应该有一个在路径中调用它的包装器。然而,对我来说,/usr/bin/rake是指向.././System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/rake的符号链接。这与我的rails可执行文件不同。对我来说,/usr/bin/rails是从命令行提取版本的shell脚本。您可以对/usr/bin/rake文件进行cat吗?我刚刚运行了gem pristine rake,并将/usr/bin/rake恢复到shell脚本包装器中。不仅如此,我的错误也消失了。很高兴听到你让它工作了。bundle exec的文档说它使用了文件中指定的内容。但是我的项目没有一个文件。我不知道为什么没有;也许是因为它基于一个更早的Rails版本。这是正确的答案,但在我的情况下,我的环境有点混乱。(请参阅上面关于使用gem pristine rake进行更正的注释)。
gem 'rake', ' <11.0'
bundle update