0

RakeFile に新しいタスクを追加しました (タスクを lib/tasks に追加するのが新しい方法であることは知っていますが、他のタスクは RakeFile にあり、まだリファクタリングしたくありません。) 追加したタスクモデルにアクセスします(モデル名がエラーにないため、そうではないかもしれません)が、そのメソッドにはアクセスしません。

rake aborted!
undefined method `transcode' for #<Class:0x10700e878>

RakeFile での私のタスクは非常に単純です。

namespace :casta do
  desc "Transcode user videos from S3"
  task :transcode => :environment do
    ProfileVideo.transcode
  end
end

そして、私のモデルは可能な限り単純です。

class ProfileVideo < ActiveRecord::Base

  belongs_to :application_form

  def transcode
    puts "Transcoding"
  end

end

私の他の RakeFile タスクはスクリプト/ランナーを使用しており、完全に正常に動作します。

rails 2.3.14
rake 0.8.7 (テストのためにダウングレードしましたが、0.9.2 でした)

いくつかの洞察が欲しいです、ありがとう。

4

1 に答える 1

2

クラス メソッドとしてトランスコードを呼び出しているため、トランスコード メソッドを次のように変更します。

  def self.transcode
    puts "Transcoding"
  end

または、より可能性が高いのは、ProfileVideo のインスタンスを作成し、その上でトランスコードを呼び出し、トランスコード メソッドをそのままにしておくことです。

  task :transcode => :environment do
    pv = ProfileVideo.new(attributes)
    pv.transcode
  end
于 2013-01-14T23:38:13.143 に答える