0

かなり長い定義を持つレーキ タスクがあります。かなり長い一連の命令を取り、次のように関数に分割しようとしました。

#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