2010-02-01 9 views
2

Je suis en train d'utiliser le plug-in pour chaque fois que des rails pour réaliser un processus de modèle à certains moments. Mon schedule.rb est la suivante:Plugin Aide

every 1.day, :at => '5:30 am' do 
    runner "User.mail_out" 
    end 

Mon modèle est le suivant:

class User < ActiveRecord::Base 

    acts_as_authentic 

    def mail_out 

    weekday = Date.today.strftime('%A').downcase 

    @users = find(:conditions => "#{weekday}sub = t") 

    @users.each { |u| UserMailer.deliver_mail_out(u)} 


    end 

end 

Lorsque je tente d'exécuter le script/runner développement -e "User.mail_out" commande, je reçois le erreur suivante:

/var/lib/gems/1.8/gems/rails-2.3.5/lib/commands/runner.rb:48: undefined method `mail_out' for #<Class:0xb708bd50> (NoMethodError) 
    from (eval):1 
    from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `eval' 
    from /var/lib/gems/1.8/gems/rails-2.3.5/lib/commands/runner.rb:48 
    from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
    from /usr/lib/ruby/1.8/rubygems/custom_require.rb:31:in `require' 
    from script/runner:3 

Quelqu'un peut-il signaler ce qui ne va pas? Aussi, comment puis-je appeler manuellement le processus mail_out (à partir de la ligne de commande) pour tester la fonctionnalité de mon système de messagerie.

Merci!

Répondre

3

Vous obtenez cette erreur parce que vous avez défini la méthode mail_out comme une méthode exemple au lieu d'une méthode de classe. Pour résoudre ce problème, modifiez la ligne de définition de méthode (ajouter self.):

def self.mail_out 

Pour le tester à partir de la ligne de commande, faire quelque chose comme ceci:

script/runner "User.mail_out" 

Vous pouvez puts ou print quelque chose donc vous obtenez des commentaires sur ce qui s'est passé.

+0

Nous vous remercions de l'aide. Maintenant, j'ai une nouvelle erreur, j'ai mis à jour mon message ci-dessus. J'ai aussi inclus mon script mail. Des idées de ce qui ne fonctionne pas? –

+0

Bonne question, mais s'il vous plaît essayer de ne pas modifier votre question de manière significative après une réponse est affichée. Le but de ce site est de construire une collection de pages web avec des réponses utiles à des questions spécifiques, non seulement pour les demandeurs de questions, mais pour toute la communauté de développement, y compris ceux qui liront cette page dans le futur. Votre nouvelle question n'est pas liée à l'original (pas totalement votre faute - il peut sembler lié), il serait donc plus clair de l'afficher comme une nouvelle question. (Aussi, c'est la deuxième réponse utile que je vous ai donnée - voir vos questions précédentes - que diriez-vous d'un vote?) –

+0

Désolé, je suis toujours en train de faire le coup de ce site. Je vais poster une nouvelle question. Et j'ai marqué vos réponses :) Merci pour l'aide. –

0

Je recevais la même erreur que l'OP, sauf que j'ai eu la méthode de classe définie correctement (ou donc je pensais).

Il est apparu que je mettrais la méthode dans le contrôleur (qui ressemblait au bon endroit) au lieu du modèle (qui ressemblait au mauvais endroit). Quoi qu'il en soit, mettre la méthode dans le modèle a résolu ce problème pour moi.

Questions connexes