74 votes

Pourquoi ma tâche rake personnalisée dans lib/tasks n'est-elle pas découverte dans Rails 3 ?

Les tâches rake intégrées fonctionnent bien, mais ma nouvelle tâche personnalisée, dans Project/lib/tasks/payments.rb ne se charge pas :

namespace :payments  do
  desc "Tally payments at the end of the month"
  task :compute => :environment do
    BillingPeriod.compute_new_period
  end
end

$ rake payments:compute
(in /Users/rob/Code/Apps/skyfarm)
rake aborted!
Don't know how to build task 'payments:compute'

Cela fonctionne bien si je charge le fichier application.rb :

require 'lib/tasks/payments.rb'

...mais ça casse d'autres choses :

$ rails s
./lib/tasks/payments.rb:1: undefined method `namespace' for main:Object (NoMethodError)

187voto

Brandon Tilley Points 49142

Changez l'extension du fichier de .rb a .rake .

33voto

aceofbassgreg Points 908

Dans ce cas précis, le fait de ne pas avoir de .rake a provoqué l'erreur. Cependant, j'ai rencontré le même problème avec une application Rails 4.2 aujourd'hui, et c'est parce que je n'avais pas de fichier de type desc pour ma tâche rake, donc assurez-vous que si vous écrivez votre propre tâche (c'est-à-dire que vous n'en générez pas une), vous ajoutez une balise desc .

Pour plus d'informations : http://guides.rubyonrails.org/command_line.html#custom-rake-tasks

0voto

Arup Rakshit Points 50675

Selon le guide Rails 2.10 Tâches Rake personnalisées

Les tâches rake personnalisées ont une extension .rake et sont placées dans Rails.Root/lib/tasks.

Mais vous avez .rb extension.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X