かなり長い定義を持つレーキ タスクがあります。かなり長い一連の命令を取り、次のように関数に分割しようとしました。
#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 タスクによって呼び出される関数内のモデル クラスにアクセスするにはどうすればよいですか?