Обновление гема Rails не работает (с версии 4.1.1 до 4.2.0) в качестве решения предупреждения: ошибка ссылки на циклический аргумент

Я продолжаю получать следующую ошибку, когда запускаю любую команду rake, и в частности rake db:seed, которая прервется без завершения:

$ rake db:seed
/Users/rachel/.rvm/gems/[email protected]/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, поэтому я надеялся создать новый rvm для обновления Rails до 4.2.0, чтобы я мог продолжить свои проекты. Однако каждый раз, когда я пытаюсь обновить Rails, он говорит «установлен», но не может установить его в созданную мной рубиновую версию. Вот типичный шаблон командной строки, когда я пытаюсь обновить 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 правильно обновляться в моем rvm?


person Rachel C.    schedule 03.03.2015    source источник


Ответы (3)


Попробуйте следующее:

rvm use [email protected] --create
gem install rails
rails -v

Это должно дать вам рельсы 4.2

person Ahmad Al-kheat    schedule 03.03.2015
comment
Спасибо за ответ, но я получаю ту же ошибку, когда следую этому коду: $ rvm use [email protected] --create Using /Users/rachel/.rvm/gems/ruby-2.2.0 с gemset rails4. 2 $ gem install rails Успешно установлено rails-4.2.0 Анализ документации для rails-4.2.0 Завершена установка документации для rails через 1 секунду 1 gem установлен $ rails -v Rails 4.1.1 Я пробовал создавать отдельные rvms, а также пробовал обновлять Rails в глобальном гемсете, и каждый раз получаю одну и ту же ошибку, когда обновление не проходит. Есть ли что-нибудь еще, что я мог бы попробовать? - person Rachel C.; 03.03.2015
comment
Попробуйте запустить обновление драгоценных камней, затем снова выполните обновление рельсов. - person Ahmad Al-kheat; 03.03.2015
comment
Я обновил свою Mac OS, обновил Ruby до версии 2.2.0 и обновил все свои устаревшие драгоценные камни, но все равно получил ту же ошибку: $ gem update Updating installed gems Updating jbuilder Gems updated: jbuilder $ rails -v Rails 4.1.1 $ gem install rails Successfully installed rails-4.2.0 Parsing documentation for rails-4.2.0 Done installing documentation for rails after 0 seconds 1 gem installed $ rails -v Rails 4.1.1 Может ли это быть проблемой с моей системой? Или проблема с моей версией Ruby? Я пробовал в основном все обновления, которые мог исследовать, но каждый раз, когда rails -v возвращался с 4.1.1 - person Rachel C.; 03.03.2015
comment
Хорошо, я предлагаю вам сначала удалить рельсы 4.1.1 и снова установить 4.2. gem удалить рельсы -v 4.1.1 - person Ahmad Al-kheat; 03.03.2015
comment
Но будьте осторожны с этим, так как я не уверен, что это повлияет на ваше текущее приложение. - person Ahmad Al-kheat; 03.03.2015
comment
Спасибо - я все равно сделал то, что вы предложили, потому что без rake db:seed мое текущее приложение все равно не работает, но даже после удаления 4.1.1 и переустановки 4.2 он все еще говорит, что текущая версия Rails - 4.1.1. Есть вероятность, что это баг или еще что-то можно сделать? Все, о чем я могу думать, это удалить всю установку Ruby с моего компьютера, но я не думаю, что это сработает, так как я несколько раз удалял Rails, а также создавал новые rmv, которые будут иметь только Rails 4.2, за исключением того, что все они заканчиваются с 4.1.1 ни на что. - person Rachel C.; 03.03.2015
comment
(Кстати, спасибо за вашу помощь, я не могу проголосовать за вас, потому что моя репутация все еще слишком низка, но я действительно ценю это. Я относительно новичок в этом, и эта проблема остановила мое использование Ruby/Rails, так как ни один из моих граблей не будет работать без устранения ошибки «циклической ссылки на аргумент», и я не вижу, чтобы решить эту проблему без обновления до Rails 4.2). - person Rachel C.; 03.03.2015
comment
Это очень озадачивает, попробуйте открыть тикет в главном репозитории Rails на GitHub. github.com/rails/rails/issues - person Ahmad Al-kheat; 03.03.2015

Проблема, вызывающая «предупреждение: циклическая ссылка на аргумент», заключалась в том, что файлы в Gemfile.lock моего проекта не соответствовали версиям, которые я устанавливал, поэтому он продолжал возвращаться к устаревшей версии и вызывать ошибку.

Чтобы исправить это, я обновил все свои гемсеты и запустил очистку, чтобы убедиться, что не осталось устаревших версий, а затем выполнил следующие команды:

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. Как только я убедился, что эти драгоценные камни работают, я создал новый проект Rails в новом обновленном rvm:

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

Это создало новый проект с Rails 4.2.0, который совместим с правильными драгоценными камнями, чтобы избежать ошибки «предупреждение: ссылка на циклический аргумент», поэтому я больше не вижу ее, когда использую rake или любую другую команду. Для более подробного объяснения см. api.rubyonrails.org/classes/Rails/Railtie.html. Railtie — это гем, который координирует действия Rails, такие как rake, поэтому, если он устарел в вашем Gemfile.lock, но не в вашем Ruby rvm, создаст ошибку.

person Rachel C.    schedule 03.03.2015

Теперь это решено.

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

исправить предупреждение Ruby 2.2: циклическая ссылка на аргумент

используйте синтаксис self.method для решения проблем с циклическими аргументами /3a30b12c774dfaa72acfe520e823374131631ea9

person DJSampat    schedule 29.07.2015