Rails gem更新不起作用(版本4.1.1到4.2.0)作为“警告:循环参数引用”错误的解决方案

当我运行任何类型的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中正确更新的任何想法?

请尝试以下方法:

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

这应该给你rails 4.2

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

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

 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的新项目,该项目与正确的gems兼容,以避免出现“警告:循环参数引用”错误,因此当我使用rake或任何其他命令时,我不再看到它。 有关更详细的说明,请参阅api.rubyonrails.org/classes/Rails/Railtie.html – Railtie是协调Rails操作的gem,如rake,所以如果它在Gemfile.lock中已经过时但在Ruby rvm中没有将创建错误。

这已经解决了。

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