2013-01-14 2 views
0

J'ai ajouté une nouvelle tâche à mon RakeFile (je sais que la nouvelle façon de faire est d'ajouter votre tâche à lib/tasks, mais d'autres tâches sont dans le RakeFile et je ne souhaite pas refactor juste pour l'instant.) La tâche que j'ai ajouté accède à un modèle (peut-être pas cependant que le nom du modèle n'est pas dans l'erreur) mais ne va pas accéder à sa méthode.rake task: Méthode non définie pour la classe

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

Ma tâche dans le RakeFile est assez simple;

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

Et mon modèle est aussi simple que possible; Mes autres tâches RakeFile utilisent script/runner et fonctionnent très bien. Les autres tâches RakeFile utilisent script/runner.

rails 2.3.14
râteau 0.8.7 (j'étais 0.9.2 si rétrogradé à tester)

Aimerait une idée, merci.

Répondre

2

Vous appelez transcode comme méthode de classe, donc changer la méthode de transcoder à:

def self.transcode 
    puts "Transcoding" 
    end 

Ou plus probablement ce que vous voulez: vous pouvez créer une instance de ProfileVideo et appeler transcoder à ce sujet, et laisser la méthode de transcodage telle qu'elle est:

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

Shoots et scores! Parfait! Merci beaucoup! – Christian

+0

11 minutes avant que je puisse accepter la réponse - le fera alors. – Christian

+0

Oh, j'aime vraiment la deuxième option en fait, parfaite. – Christian

Questions connexes