2011-04-16 12 views
58

construir-en el rastrillo de tareas trabajan muy bien, pero mi nueva costumbre uno, en el Proyecto/lib/tareas/payments.rb no se cargan:¿Por qué mi tarea de rake personalizada en lib/tasks no se descubre en Rails 3?

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' 

Funciona bien si me carga el archivo application.rb :

require 'lib/tasks/payments.rb' 

... pero rompe otras cosas:

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

En caso de que alguien termina aquí, que cuenta no es el uso de rieles: 'poner sus archivos .rake' en un directorio llamado' rakelib'. –

Respuesta

155

Cambie la extensión del archivo de .rb a .rake.

+0

Si esto no ayuda, encontré una solución: http://blog.nathanhumbert.com/2010/02/rails-3-loading-rake-tasks-from-gem.html – User

0

De acuerdo con los raíles de guía 2.10 Custom Rake Tasks

tareas rastrillo personalizada tienen una extensión .rake y se colocan en Rails.root/lib/tareas.

Pero tiene la extensión .rb.

19

En este caso específico, no tener una extensión .rake provocó el error. Sin embargo, tuve el mismo problema con una aplicación Rails 4.2 hoy, y fue porque no tenía un desc para mi tarea de rake, así que asegúrese de escribir su propia tarea (es decir, no generar una) que agregue un desc.

Para más información: http://guides.rubyonrails.org/command_line.html#custom-rake-tasks

+1

Cuando vi 'Sin embargo' en su respuesta, ya sabía que su respuesta resolvería mi problema;) +1 – Aleks

Cuestiones relacionadas