Làm cách nào để tạo một tác vụ rake db:seed
để sử dụng các tệp seed.rb khác nhau về sản xuất và phát triển?Ruby On Rails: cách tạo các tệp hạt giống khác nhau cho các môi trường
chỉnh sửa: bất kỳ chiến lược tốt hơn sẽ được chào đón
Làm cách nào để tạo một tác vụ rake db:seed
để sử dụng các tệp seed.rb khác nhau về sản xuất và phát triển?Ruby On Rails: cách tạo các tệp hạt giống khác nhau cho các môi trường
chỉnh sửa: bất kỳ chiến lược tốt hơn sẽ được chào đón
Bạn có thể có một nhiệm vụ cào cư xử khác nhau dựa trên môi trường hiện tại, và bạn có thể thay đổi môi trường là một nhiệm vụ chạy trong bằng cách thông qua RAILS_ENV=production
để lệnh. Sử dụng hai này lại với nhau bạn có thể tạo ra một cái gì đó giống như vậy:
Tạo các tập tin sau đây với môi trường hạt cụ thể của bạn:
db/seeds/development.rb
db/seeds/test.rb
db/seeds/production.rb
Nơi dòng này trong tập tin hạt cơ sở của bạn để chạy các tập tin mong muốn
load(Rails.root.join('db', 'seeds', "#{Rails.env.downcase}.rb"))
Gọi cho nhiệm vụ hạt giống:
rake db:seed RAILS_ENV=production
Đây vẫn là kỹ thuật nào thích hợp hơn cho Rails 4? – Donato
Tôi không biết đó có phải là kỹ thuật thích hợp hơn không. Nhưng chắc chắn là địa ngục hoạt động hoàn hảo. – rryter
Chỉ là những gì tôi đang tìm kiếm. Tôi đã thực hiện một số môi trường tùy chỉnh khác như ci và qa. Chỉ cần chắc chắn rằng những người khác cũng được định nghĩa trong database.yml và trong thư mục config/environment. – ed209
Tôi thích thực hiện tất cả các hạt giống trong bên một tập tin seed.rb
và sau đó chỉ tách các môi trường bên trong.
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
Bằng cách đó bạn không cần phải bỏ thuộc tính RAILS_ENV vào tác vụ cào của bạn hoặc quản lý nhiều tệp. Bạn cũng có thể bao gồm Rails.env.test?
, nhưng cá nhân tôi cho phép RSPEC xử lý dữ liệu thử nghiệm.
hãy xem tại đây: http://stackoverflow.com/questions/8662127/how-to-use-seed-rb-to-selectively-populate-development-and-or-production-databas – flyingjamus