Использование db: заполняет, вызывая исключение nil - PullRequest
0 голосов
/ 14 декабря 2010

Я использую db: populate для предварительной загрузки некоторых примеров данных в мой проект rails.Например, я использую следующий код для заполнения базы данных:

require 'faker'
namespace :db do
  task :populate => :environment do
    Rake::Task['db:reset'].invoke
    100.times do |u|
      User.create!(
        :name => Faker::Name.name,
        :email => Faker::Internet.email
      )
    end
    puts "The count of user(s) is #{User.all.count}"
    User.all.each do |u|
      # Add some more info based for each user
    end
  end
end   

Тем не менее, я получаю сообщение об ошибке, когда запускаю «rake db: populate».Я получаю:

rake aborted!
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.each

Я получаю эту ошибку при вызове к Put, где я распечатываю количество пользователей.Если я уменьшу 100. примерно до 10., заполнение будет работать правильно, и вызов User.all.count ответит правильным значением 10. Лучшее, что я могу догадаться, это то, что вызов "фейкер" получаетперегружен и еще не вернул значение, которое вызывает объект nil.Однако, возможно, заполнение пытается выполнить это как одну транзакцию базы данных и перегружает некоторый буфер.

Есть ли способ «сбрасывать» вставку в базу данных, чтобы каждая транзакция записывалась в базу данных или делала паузу, пока «фейкер» отвечает, чтобы я мог создать больший набор данных для работы?

Thanks
Steve Woolley
swoolley@ardentsoft.com

1 Ответ

1 голос
/ 18 декабря 2010

У меня была та же проблема

, просто запустив rake db: seed для нескольких выражений консольного типа, после выполнения трассировки он говорит: ** Invoke environment (first_time) ** Execute environment

Теперь у меня нет среды first_time, я посмотрел, что я изменил, и оказалось, что я по умолчанию вызывал другую среду в инициализаторе, когда пытался подключиться к БД.

Посмотрите на файлы database.yml или application.rb, где может быть конфликт

Приветствия

...