У меня есть seeds.rb
Заполнение моей базы данных разработки. И я знаю, что могу легко применить seeds.rb
к моей тестовой базе данных с помощью:Как засеять тестовые данные в Rails, не используя seeds.rb?
rake db:seed RAILS_ENV=test
Однако я хочу другоеseeds.rb
файл, чтобы заполнить мою тестовую базу данных. Возможно seeds_test.rb
. Это должно быть чрезвычайно распространенным требованием среди программистов-рельсов, не так ли?
Если нет простого способа сделать это, например rake db:seed:seeds_test RAILS_ENV=test
, то как мне создать задачу рейка? Я думаю, что что-то подобное в lib/tasks/test_seeds.rake
:
namespace :db do
desc "Seed data for tests"
task :seed_test => :environment do
load "#{Rails.root}/db/seeds_test.rb"
end
end
Я думаю, что будет работать, но я бы хотел, чтобы моя задача рек автоматически знать, чтобы применить это только к тестовой базе данных без меня указать:
rake db:seed_test RAILS_ENV=test
Как получить задачу грабли, так что все я должен ввести в командной строке:
rake db:seed_test
UPDATE: Другой StackOverflow вопрос был связан, когда ответ должен был сделать это:
Rails.env = 'test'
К сожалению, не делает ничего (по крайней мере, по состоянию на Rails 4.2) :(.
Возможный дубликат [Rails: сделать эту задачу рейка осведомленной о том, что она находится в тестовой среде] (http: // stackoverfl ow.com/questions/5525757/rails-make-this-rake-task-aware-that-it-is-in-the-test-environment) – Amadan
К сожалению, ответ на этот дублирующий вопрос (который на самом деле не является дубликатом) не работает :(. 'Rails.env = 'test'' фактически не изменяет среду, и данные семени попадают в базу данных разработки. –
Не так ли? Я просто тестировал его, и он определенно работает для меня (данные добавлены только в 'test.sqlite3'). (Я скопировал ваш код, поместил 'Rails.env = 'test'' чуть выше' load'.) Я также запускаю Rails 4.2.0. – Amadan