我有一个定义相当长的 rake 任务。我尝试采用相当长的一组指令并将它们分成一个函数,如下所示:
#lib/tasks/helpme.rake
require 'rake'
require 'rest-client'
require 'warbler'
task :helpme => :environment do
# some stuff
some_function("a","b")
end
# (MyCoolModel < ActiveRecord:Base is defined in app/models/my_cool_model.rb)
def some_function (p1,p2)
m=MyCoolModel.new
m.p1=p1
m.p2=p2
# 20 more lines of very cool code
end
当我运行“rake helpme”时,这不起作用。它抱怨 MyCoolModel 无法访问。然后我尝试了以下方法,知道如何在 Ruby 中做各种奇怪的事情:
#lib/tasks/helpme.rake
require 'rake'
require 'rest-client'
require 'warbler'
task :helpme => :environment do
# some stuff
# (MyCoolModel < ActiveRecord:Base is defined in app/models/my_cool_model.rb)
def some_function (p1,p2)
m=MyCoolModel.new
m.p1=p1
m.p2=p2
# 20 more lines of very cool code
end
some_function("a","b")
end
当我运行“rake helpme”时,它工作得很好。
我的问题:如何在自定义 rake 任务调用的函数中访问模型类,而无需在任务代码的代码中编写函数?