0

我有一个定义相当长的 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 任务调用的函数中访问模型类,而无需在任务代码的代码中编写函数?

4

0 回答 0