2015-05-11 12 views
3

Я хочу, чтобы засеять базу данных с Faker, проблема в том, что я получаю сообщение об ошибке, когда я делаю:I18n :: MissingTranslationData: перевод отсутствует: ошибка en.faker при посеве дб

rake db:reset 

я получаю это сообщение:

rake aborted! 
I18n::MissingTranslationData: translation missing: en.faker.name.name 
/Library/Ruby/Gems/2.0.0/gems/i18n-0.7.0/lib/i18n.rb:311:in `handle_exception' 
/Library/Ruby/Gems/2.0.0/gems/i18n-0.7.0/lib/i18n.rb:161:in `translate' 
/Library/Ruby/Gems/2.0.0/gems/faker-1.4.3/lib/faker.rb:128:in `rescue in translate' 
/Library/Ruby/Gems/2.0.0/gems/faker-1.4.3/lib/faker.rb:120:in `translate' 
/Library/Ruby/Gems/2.0.0/gems/faker-1.4.3/lib/faker.rb:86:in `fetch' 
/Library/Ruby/Gems/2.0.0/gems/faker-1.4.3/lib/faker.rb:99:in `parse' 
/Library/Ruby/Gems/2.0.0/gems/faker-1.4.3/lib/faker/name.rb:8:in `name' 
/Users/hbendev/code/wikitec/db/seeds.rb:6:in `block in <top (required)>' 
/Users/hbendev/code/wikitec/db/seeds.rb:4:in `times' 
/Users/hbendev/code/wikitec/db/seeds.rb:4:in `<top (required)>' 
/Library/Ruby/Gems/2.0.0/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:268:in `load' 
/Library/Ruby/Gems/2.0.0/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:268:in `block in load' 
/Library/Ruby/Gems/2.0.0/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:240:in `load_dependency' 
/Library/Ruby/Gems/2.0.0/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:268:in `load' 
/Library/Ruby/Gems/2.0.0/gems/railties-4.2.0/lib/rails/engine.rb:547:in `load_seed' 
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.0/lib/active_record/tasks/database_tasks.rb:250:in `load_seed' 
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.0/lib/active_record/railties/databases.rake:180:in `block (2 levels) in <top (required)>' 
/Library/Ruby/Gems/2.0.0/gems/activerecord-4.2.0/lib/active_record/railties/databases.rake:139:in `block (2 levels) in <top (required)>' 
Tasks: TOP => db:setup => db:seed 

Я не знаю, почему появляется эта ошибка, так как у меня нет никаких проблем с Faker раньше, я просто хотел сбросить дб обновлять семена.

Я google, но я не могу найти ничего связанного, что решает проблему.

Я пытался добавить:

I18n.reload! 

После require 'faker' в моем файле seeds.rb, но не повезло.

Похоже, проблема с самой Faker, так как база данных создается должным образом, когда я делаю rake db:drop db:create db:migrate это работает, пока есть, но когда я пытаюсь заполнения базы данных с Faker с rake db:seed или rake db:reset, я получаю ошибка.

Что я могу сделать? Заранее спасибо.

UPDATE - я включил seeds.rb и en.yml файлы

seeds.rb:

require 'faker' 

# Create Users 
5.times do 
    user = User.new(
    name: Faker::Name.name, 
    email: Faker::Internet.email, 
    password: Faker::Lorem.characters(10) 
) 
    user.skip_confirmation! 
    user.save! 
end 
users = User.all 

# Create Wikis 
25.times do 
    Wiki.create!(
    title: Faker::Lorem.sentence, 
    body: Faker::Lorem.paragraph, 
    :private => false, 
    user: users.sample 
) 
end 

# Create Admin account 
admin = User.new(
    name: 'Admin User', 
    email: '[email protected]', 
    password: 'helloworld', 
    role: 'admin' 
) 
admin.skip_confirmation! 
admin.save! 

# Create Premium account 
premium = User.new(
    name: 'Premium User', 
    email: '[email protected]', 
    password: 'helloworld', 
    role: 'premium' 
) 
premium.skip_confirmation! 
premium.save! 

# Create Standard account 
standard = User.new(
    name: 'Standard User', 
    email: '[email protected]', 
    password: 'helloworld', 
    role: 'standard' 
) 
standard.skip_confirmation! 
standard.save! 

puts "Seed finished" 
puts "#{Wiki.count} wikis created" 
puts "#{User.count} users created" 

en.yml:

en: 
    hello: "Hello world" 
+0

вы можете отправить файл семян? –

+0

Можете ли вы опубликовать файл en.yml? – Joel

+1

https://github.com/stympy/faker/issues/5 – Joel

ответ

1

Проверьте I18n Факер информация о конфигурации здесь:

https://github.com/stympy/faker#customization

Похоже, вы должны обеспечить соблюдение локали I18n Faker на случай, если вы используете нестандартную локаль в своем приложении.

Просто установите Faker :: Config.locale в нужную вам местность, а Faker будет позаботиться об остальном.

0

Это работало для меня ...

В вашем Gemfile добавить :require => false

group :development, :test do 
    #gem 'faker', '~> 1.4.3' 
    gem 'faker', :require => false 
end 

Добавить require "faker" вручную ...

-1

У меня была такая же проблема. необходимо переместить обманщика в Gemfile из

group: development: test do 
    gem 'faker' 
end 

для меня это решило проблему удачи