Ruby on rails указывает среду в задаче rake

Я хочу создать собственный файл db/seeds и передать его в определенную среду

desc "Select for bonus"
task :bonus => :environment do
  puts "Bonus for: #{pick(User).name}"
end

Возможно ли в разделе задач моей задачи rake указать, скажем, только тестовую среду без запуска RAILS_ENV=test rake в моей командной строке?


person Kevin Behan    schedule 13.01.2015    source источник
comment
Вы всегда можете изменить среду с помощью ENV['RAILS_ENV']="a value", но похоже, что вам нужно установить RAILS_ENV до выполнения ruby.   -  person Daniel Farrell    schedule 13.01.2015


Ответы (1)


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

desc "Select for bonus"
task :bonus => :environment do
  puts "Bonus for: #{pick(User).name}"
  ActiveRecord::Base.establish_connection('test')
  ....
end

ActiveRecord::Base.establish_connection('test') выше подключается к базе данных test перед выполнением остальных шагов в этой базе данных.

Если вы делаете гораздо более сложные вещи как часть задачи, это тоже возможно. См. Как принудительно включить RAILS_ENV в задаче rake? для некоторых советов.

person Prakash Murthy    schedule 13.01.2015