2016-04-19 1 views
2

Ich habe gerade Ruby 2.2.2 auf 2.3.0 aktualisiert. Wenn ich eine Rake-Task starte, erhalte ich folgende Fehlermeldung:Upgrade auf Ruby 2.3.0 NameError: nicht initialisierte Konstante I18n :: Config :: Backend

Christians-Air:my_rails_app cman77$ rake --trace 
rake aborted! 
NameError: uninitialized constant I18n::Config::Backend 
/Users/cman77/.rvm/gems/[email protected]/gems/i18n-0.7.0/lib/i18n/config.rb:19:in `backend' 
/Users/cman77/.rvm/gems/[email protected]/gems/i18n-0.7.0/lib/i18n.rb:147:in `translate' 
/Users/cman77/.rvm/gems/[email protected]/gems/actionview-4.2.6/lib/action_view/helpers/translation_helper.rb:69:in `translate' 
/Users/cman77/.rvm/gems/[email protected]/gems/i18n-0.7.0/lib/i18n/config.rb:19:in `backend' 
/Users/cman77/.rvm/gems/[email protected]/gems/i18n-0.7.0/lib/i18n.rb:147:in `translate' 
/Users/cman77/.rvm/gems/[email protected]/gems/actionview-4.2.6/lib/action_view/helpers/translation_helper.rb:69:in `translate' 
/Users/cman77/.rvm/gems/[email protected]/gems/railties-4.2.6/lib/rails/engine.rb:658:in `block in run_tasks_blocks' 
/Users/cman77/.rvm/gems/[email protected]/gems/railties-4.2.6/lib/rails/engine.rb:658:in `each' 
/Users/cman77/.rvm/gems/[email protected]/gems/railties-4.2.6/lib/rails/engine.rb:658:in `run_tasks_blocks' 
/Users/cman77/.rvm/gems/[email protected]/gems/railties-4.2.6/lib/rails/application.rb:452:in `run_tasks_blocks' 
/Users/cman77/.rvm/gems/[email protected]/gems/railties-4.2.6/lib/rails/engine.rb:453:in `load_tasks' 
/Users/cman77/.rvm/gems/[email protected]/gems/railties-4.2.6/lib/rails/railtie.rb:194:in `public_send' 
/Users/cman77/.rvm/gems/[email protected]/gems/railties-4.2.6/lib/rails/railtie.rb:194:in `method_missing' 
/Users/cman77/Dropbox/rails_projects/my_rails_app/Rakefile:9:in `<top (required)>' 
/Users/cman77/.rvm/gems/[email protected]/gems/rake-11.1.2/lib/rake/rake_module.rb:28:in `load' 
/Users/cman77/.rvm/gems/[email protected]/gems/rake-11.1.2/lib/rake/rake_module.rb:28:in `load_rakefile' 
/Users/cman77/.rvm/gems/[email protected]/gems/rake-11.1.2/lib/rake/application.rb:689:in `raw_load_rakefile' 
/Users/cman77/.rvm/gems/[email protected]/gems/rake-11.1.2/lib/rake/application.rb:94:in `block in load_rakefile' 
/Users/cman77/.rvm/gems/[email protected]/gems/rake-11.1.2/lib/rake/application.rb:176:in `standard_exception_handling' 
/Users/cman77/.rvm/gems/[email protected]/gems/rake-11.1.2/lib/rake/application.rb:93:in `load_rakefile' 
/Users/cman77/.rvm/gems/[email protected]/gems/rake-11.1.2/lib/rake/application.rb:77:in `block in run' 
/Users/cman77/.rvm/gems/[email protected]/gems/rake-11.1.2/lib/rake/application.rb:176:in `standard_exception_handling' 
/Users/cman77/.rvm/gems/[email protected]/gems/rake-11.1.2/lib/rake/application.rb:75:in `run' 
/Users/cman77/.rvm/gems/[email protected]/gems/rake-11.1.2/bin/rake:33:in `<top (required)>' 
/Users/cman77/.rvm/gems/[email protected]/bin/rake:23:in `load' 
/Users/cman77/.rvm/gems/[email protected]/bin/rake:23:in `<main>' 
/Users/cman77/.rvm/gems/[email protected]/bin/ruby_executable_hooks:15:in `eval' 
/Users/cman77/.rvm/gems/[email protected]/bin/ruby_executable_hooks:15:in `<main>' 

Jeder hat Erfahrung damit? Ich bin wirklich in Bezug darauf fest, wie man sogar beginnt, dieses Problem zu diagnostizieren/zu beheben. Hier

ist der Inhalt meiner Rakefile:

#!/usr/bin/env rake 
# Add your own tasks in files placed in lib/tasks ending in .rake, 
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. 

require File.expand_path('../config/application', __FILE__) 

ENV['NEWRELIC_ENABLE'] = 'false' 

MyRailsApp::Application.load_tasks 

Dies scheint die Codezeile verwiesen im I18n gem werden: https://github.com/svenfuchs/i18n/blob/master/lib/i18n/config.rb#L18

aktualisieren: so scheint es, die Verwendung gebunden zu werden von include ActionView::Helpers::TranslationHelper in einer meiner Rake-Dateien. Wenn ich diese Zeile entferne, kann ich Rake-Befehle ausführen.

Update2: Entfernen include ActionView::Helpers::TranslationHelper und Ersetzen (t "some_text") mit (I18n.t "some_text") vollständig das Problem gelöst. Ich werde immer noch das Kopfgeld an jemanden vergeben, der erklären kann, warum das mit einem Ruby-Upgrade gebrochen wurde!

+0

Können Sie etwas bereitstellen, mit dem wir Ihren Fehler reproduzieren können? – Elyasin

+0

Kannst du den Inhalt von '/ Users/cman77/Dropbox/rails_projects/my_rails_app/Rakefile' posten – Sebin

+0

@Sebin Ich habe den Inhalt der Rakefile hinzugefügt. – cman77

Antwort

1

Meine Vermutung ist, dass Sie dieses Problem erfahren haben, weil Sie die t Methode (ein Helfer für Controller und Ansichten) in einer Rake-Task anstelle des Standards I18n.t verwenden.

Dies ist ein ungewöhnlicher und unkonventioneller Ansatz, so dass Sie in einer möglichen Regression few have experienced gefallen sind und es eine einfache Lösung hat, wie die, die Sie gefunden haben: Halten Sie sich an die Konventionen.

Verwandte Themen