3

当我运行任何类型的 rake 命令时,我不断收到以下错误,特别是 rake db:seed 它将在未完成的情况下中止:

$ rake db:seed
/Users/rachel/.rvm/gems/ruby-2.2.0@rails4.2/gems/activesupport-4.1.1/lib/active_support/values/time_zone.rb:285: warning: circular argument reference - now
rake aborted!
ActiveRecord::UnknownAttributeError: unknown attribute: description

我做了一些研究,发现这是一个由 Rails 4.1.9 中不兼容的 gem 引起的错误(我认为?),所以我希望创建一个新的 rvm 来将 Rails 更新到 4.2.0,这样我就可以继续我的项目了。但是,每次我尝试更新 Rails 时,它都会显示“已安装”,但无法实际安装到我创建的 ruby​​ 版本中。这是我尝试更新 Rails 时的典型命令行模式:

$ rvm gemset create rails420
ruby-2.2.0 - #gemset created /Users/rachel/.rvm/gems/ruby-2.2.0@rails420
ruby-2.2.0 - #generating rails420 wrappers........
$ rvm 2.2.0@rails420
$ gem install rails -v 4.2.0
Fetching: rails-4.2.0.gem (100%)
Successfully installed rails-4.2.0
Parsing documentation for rails-4.2.0
Installing ri documentation for rails-4.2.0
Done installing documentation for rails after 339 seconds
1 gem installed
$ rvm 2.2.0@rails420
$ rails --version
Rails 4.1.1

基本上,它安装了 Rails 4.2.0,但是当我在安装后立即检查版本时说它没有安装。关于如何解决错误或让 Rails gem 在我的 rvm 中正确更新的任何想法?

4

3 回答 3

1

导致“警告:循环参数引用”的问题是我项目的 Gemfile.lock 中的文件与我正在安装的版本不匹配,因此它不断恢复到过时的版本并导致错误。

为了解决这个问题,我更新了所有 gemset 并运行了清理以确保没有剩余的过期版本,然后运行以下命令:

rvm use --create 2.2.0@newtest
gem install rails
Fetching: rails-4.2.0.gem (100%)
Successfully installed rails-4.2.0
Parsing documentation for rails-4.2.0
Installing ri documentation for rails-4.2.0
Done installing documentation for rails after 326 seconds
1 gem installed
$ bundle install

然后我检查了版本以确保 activerecord、activesupport、rails 和 railties 都至少有 4.2.0。一旦我确定这些 gem 工作正常,我就在新更新的 rvm 中创建了一个新的 Rails 项目:

$ rvm use ruby-2.2.0@newtest
$rails new projectname

这使用 Rails 4.2.0 创建了一个新项目,该项目与正确的 gem 兼容以避免“警告:循环参数引用”错误,所以当我使用 rake 或任何其他命令时我不再看到它。有关更详细的解释,请参阅 api.rubyonrails.org/classes/Rails/Railtie.html - Railtie 是协调 Rails 操作(如 rake)的 gem,所以如果它在您的 Gemfile.lock 中过时但在您的 Ruby rvm 中没有将产生错误。

于 2015-03-03T05:53:50.990 回答
0

尝试以下操作:

rvm use ruby-2.2.0@rails4.2 --create
gem install rails
rails -v

这应该给你 rails 4.2

于 2015-03-03T04:29:33.187 回答
0

现在这个问题已经解决了。

http://weblog.rubyonrails.org/2015/6/16/Rails-3-2-22-4-1-11-and-4-2-2-have-been-released-and-more/

修复 ruby​​ 2.2 警告:循环参数参考 https://github.com/rails/rails/commit/8fd52705eda6a2cd7e9a8a5bc723fa094e359eb7

使用 self.method 语法解决循环参数问题 https://github.com/rails/rails/commit/3a30b12c774dfaa72acfe520e823374131631ea9

于 2015-07-29T07:58:17.777 回答