Чому моє власне завдання згрібання у lib / завдання не виявлено в Rails 3?


78

Вбудовані rake-завдання працюють нормально, але мій новий, спеціальний, у Project / lib / tasks / payments.rb не завантажується:

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'

Це добре працює, якщо я завантажую файл application.rb:

require 'lib/tasks/payments.rb'

... але це порушує інші речі:

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

Якщо сюди потрапить хтось, хто не використовує Rails: помістіть ваші .rakeфайли в каталог із назвою rakelib.
Джозеф Менсфілд,

Відповіді:



33

У цьому конкретному випадку .rakeпомилка спричинена відсутністю розширення. Однак у мене сьогодні виникла така сама проблема з програмою Rails 4.2, і це тому, що у мене не було descдля мого завдання rake, тому переконайтеся, що ви пишете власне завдання (тобто не генеруєте), щоб додати desc.

Для отримання додаткової інформації: http://guides.rubyonrails.org/command_line.html#custom-rake-tasks


1
Коли я побачив Howeverу вашій відповіді, я вже знав, що ваша відповідь вирішить моє питання;) +1
Алекс

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.