2013-01-14 90 views
0

我已将一项新任务添加到我的RakeFile中(我知道这样做的新方法是将任务添加到lib/tasks,但其他任务在RakeFile中,而我不希望)我添加的任务访问模型(可能不是,因为模型名称不在错误中),但不会访问它的方法。rake任务:未定义类的方法

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任务使用脚本/转轮,他们工作得很好。

轨2.3.14
耙0.8.7(我在0.9.2虽然降级进行测试)

很想一些见解,谢谢。

回答

2

你调用代码转换为一个类的方法,所以更改转码方法:

def self.transcode 
    puts "Transcoding" 
    end 

或者更可能是你想要的东西:你可以创建ProfileVideo的实例,并调用该转码,并留下代码转换方法原样:

task :transcode => :environment do 
    pv = ProfileVideo.new(attributes) 
    pv.transcode 
    end 
+1

拍摄和分数!完善!非常感谢! – Christian

+0

我可以接受答案之前11分钟 - 会做到这一点。 – Christian

+0

哦,我真的很喜欢第二个选项,完美。 – Christian

相关问题