2017-08-14 3 views
0

Je construis un projet Ruby qui utilise un enregistrement actif mais pas de rails. A l'intérieur un de mes tests, je suis en train de ce qui suit:Active Record erreur inattendue i18n

it "fails with no driver name" do 
    command = "Driver" 
    expect {command_file.process_driver command}.to raise_error(ActiveRecord::RecordInvalid) 
end 

Et voici la méthode que j'essaie d'appeler

def process_driver command 
    driver_name = command.split[1] 
    Driver.create! :name => driver_name 
end 

Je me attends à passer :name => nil à Driver.create! qui devrait jeter un RecordInvalid mais Je reçois I18n::InvalidLocaleData. Voici le backtrace

expected ActiveRecord::RecordInvalid, got #<I18n::InvalidLocaleData: can not load translations from /Users/me/.rbenv/versions/2.3.1/lib/r...ems/activesupport-5.1.3/lib/active_support/locale/en.yml: expects it to return a hash, but does not> with backtrace: 
    # ./command_file.rb:81:in `process_driver' 
    # ./command_file.rb:63:in `block in process' 
    # ./command_file.rb:51:in `each' 
    # ./command_file.rb:51:in `each_with_index' 
    # ./command_file.rb:51:in `process' 
    # ./spec/command_file_spec.rb:60:in `block (5 levels) in <top (required)>' 
    # ./spec/command_file_spec.rb:60:in `block (4 levels) in <top (required)>' 
    # ./spec/spec_helper.rb:75:in `block (3 levels) in <top (required)>' 
    # ./spec/spec_helper.rb:74:in `block (2 levels) in <top (required)>' 

Et voici mon Gemfile

source 'https://rubygems.org' 

gem 'sqlite3', '~> 1.3', '>= 1.3.13' 
gem 'activerecord', '~> 5.1', '>= 5.1.3' 
gem 'pry', '~> 0.10.4' 
gem 'rspec', '~> 3.6' 
gem 'factory_girl', '~> 4.5' 

group :test do 
    gem 'database_cleaner' 
end 

Je n'ai pas de fichiers locaux moi-même.

Une idée de ce qui se passe? Je ne cherche aucune traduction dans ce projet. Je ne comprends pas non plus pourquoi un fichier de paramètres régionaux fourni par active_support devrait échouer. Je serais heureux de simplement désactiver i18n en quelque sorte si c'était possible mais je ne sais pas comment. Des idées quel est le problème?

+0

Avez-vous des fichiers '.yml' ou des fichiers de configuration? Pourriez-vous joindre un '.gemfile'? –

+0

@MaxL. Je n'ai aucun fichier '.yml' ou config. J'ai ajouté mon 'Gemfile' à la question – stoebelj

+0

Quelque chose dans votre dossier' config/locales'? Vider le fichier 'en.yml', peut-être? –

Répondre

0

Pour quelle raison jamais :en n'a pas été défini comme mes paramètres régionaux par défaut. Je fixe dans mon spec_helper.rb en ajoutant I18n.default_locale = 'en':

I18n.default_locale = 'en' # <--- add this line 

RSpec.configure do |config| 
    # config here... 
end 

Je sais que cela ne résout pas le problème plus pourquoi le fichier de paramètres régionaux de active_support ne chargeait pas, mais mon défi était simplement de faire l'erreur aller, ne pas utiliser i18n