Warum wird meine benutzerdefinierte Rake-Task in lib / Task in Rails 3 nicht erkannt?


78

Integrierte Rake-Aufgaben funktionieren einwandfrei, aber meine neue benutzerdefinierte Aufgabe in Project / lib / task / pays.rb wird nicht geladen:

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'

Es funktioniert gut, wenn ich die Datei application.rb lade:

require 'lib/tasks/payments.rb'

... aber es bricht andere Dinge:

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

Falls hier jemand landet, der Rails nicht verwendet: Legen Sie Ihre .rakeDateien in einem Verzeichnis namens ab rakelib.
Joseph Mansfield

Antworten:



33

In diesem speziellen Fall .rakeverursachte das Fehlen einer Erweiterung den Fehler. Ich hatte jedoch heute das gleiche Problem mit einer Rails 4.2-App, und das lag daran, dass ich keine descfür meine Rake-Aufgabe hatte. Stellen Sie also sicher, dass Sie eine hinzufügen, wenn Sie Ihre eigene Aufgabe schreiben (dh keine generieren) desc.

Für weitere Informationen: http://guides.rubyonrails.org/command_line.html#custom-rake-tasks


1
Als ich Howeverin Ihrer Antwort sah , wusste ich bereits, dass Ihre Antwort mein Problem lösen wird;) +1
Aleks

Wirklich sehr, sehr seltsam, aber froh, dass es das Problem gelöst hat
Kaka Ruto

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.