2013-05-29 12 views

Odpowiedz

32

można mieć zadanie natarcia zachowują się inaczej w zależności od aktualnego środowiska, można zmienić środowisko zadanie działa w przekazując RAILS_ENV=production do komendy. Stosując te dwa razem można stworzyć coś tak:

Utwórz następujące pliki z otoczeniem konkretnych nasion:

db/seeds/development.rb 
db/seeds/test.rb 
db/seeds/production.rb 

Umieść ten wiersz w pliku nasion bazowych, aby uruchomić odpowiedni plik

load(Rails.root.join('db', 'seeds', "#{Rails.env.downcase}.rb")) 

połączeń zadanie nasiona:

rake db:seed RAILS_ENV=production 
+0

Czy to nadal preferowana technika dla Rails 4? – Donato

+3

Nie wiem, czy jest to preferowana technika. Ale na pewno działa jak diabli. – rryter

+0

Właśnie tego szukałem. Zrobiłem też inne niestandardowe środowiska, takie jak ci i qa. Po prostu upewnij się, że te inne są również zdefiniowane w database.yml oraz w folderze config/environments. – ed209

2

chciałbym wdrożyć wszystkie nasiona z boku jeden plik seed.rb, a następnie po prostu oddzielić środowiska wewnątrz.

if Rails.env.production? 
    State.create(state: "California", state_abbr: "CA") 
    State.create(state: "North Dakota", state_abbr: "ND") 
end 

if Rails.env.development? 
    for 1..25 
    Orders.create(order_num: Faker::Number:number(8), order_date: Faker::Business.credit_card_expiry_date) 
    end 
end 

W ten sposób nie trzeba rzutować właściwości RAILS_ENV na zadaniu rake ani zarządzać wieloma plikami. Możesz również dołączyć Rails.env.test?, ale osobiście pozwoliłem RSPEC zająć się danymi testowymi.