ruby-on-rails – 如何为播种设置Rake任务

ruby-on-rails – 如何为播种设置Rake任务,第1张

概述(这实际上是一个关于Rake& Rails&依赖关系的新手问题.试图围绕这一切如何融合在一起) 基本上,我想要一个像seed.rb一样的Rake任务,但是需要单独调用.它为开发环境添加了测试数据,而我的seed.rb为所有环境提供了基本数据. 脚本family_seed.rb使用FactoryGirl生成一些记录.它看起来像这样: require File.expand_path('../../c (这实际上是一个关于Rake& Rails&依赖关系的新手问题.试图围绕这一切如何融合在一起)

基本上,我想要一个像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任务所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1292002.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-10
下一篇 2022-06-10

发表评论

登录后才能评论

评论列表(0条)

保存