基本上,我想要一个像seed.rb一样的Rake任务,但是需要单独调用.它为开发环境添加了测试数据,而我的seed.rb为所有环境提供了基本数据.
脚本family_seed.rb使用FactoryGirl生成一些记录.它看起来像这样:
require file.expand_path('../../config/environment',__file__)require './spec/factorIEs'Family.delete_allMember.delete_allzinsser = Factory.create(:family,:last_name=>'Zinsser',:first_name=>'Carl',:sim_ID => '500')blackburn = Factory.create(:family,:last_name=>'Blackburn',:first_name=>'Greg',:sim_ID => '501')
它与bundle exec“ruby db / family_seeds.rb”运行良好,但我的问题是如何使用Rake进行设置.整个事情应该放在Rake任务中吗?相反,我怎样才能设置一个可以调用脚本的任务,同时确保Rails开发环境在运行时可用?我不只是想完成工作,而是以“正确”的方式完成工作.
解决方法 解决这个问题的一种方法是在lib中创建一个类或模块(这样可以更容易地编写测试,并使代码更可重用):require '../spec/factorIEs'class FamiLyseed def self.seed raise "Don't run this in production!" if Rails.env.production? Family.delete_all Member.delete_all zinsser = Factory.create(:family,:sim_ID => '500') blackburn = Factory.create(:family,:sim_ID => '501') endend
如何创建rake任务:
require 'family_seed'namespace :seed do task :familIEs => :environment do FamiLyseed.seed endend
我要小心允许像Family.delete_all和Member.delete_all这样的东西过于自由使用.稍后你可以通过在生产数据库中调用你不想要的东西来轻松地射击自己.
如何运行rake任务:
在您的命令中运行它,如下所示:
bundle exec rake seed:familIEs总结
以上是内存溢出为你收集整理的ruby-on-rails – 如何为播种设置Rake任务全部内容,希望文章能够帮你解决ruby-on-rails – 如何为播种设置Rake任务所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)