Подтвердить что ты не робот

Почему моя задача rake в lib/задачах, не обнаруженных в Rails 3?

Встроенные функции 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)
4b9b3361

Ответ 1

Измените расширение файла с .rb на .rake.

Ответ 2

В этом конкретном случае не было расширения .rake, вызвавшего ошибку. Тем не менее, у меня была такая же проблема с приложением Rails 4.2 сегодня, и это было потому, что у меня не было desc для моей задачи рейка, поэтому убедитесь, что вы пишете свою собственную задачу (то есть не создаете ее), что вы добавьте desc.

Для получения дополнительной информации: http://guides.rubyonrails.org/command_line.html#custom-rake-tasks

Ответ 3

В соответствии с руководством Rails 2.10 Пользовательские задачи Rake

Пользовательские задачи rake имеют расширение .rake и помещаются в Rails.root/lib/tasks.

Но у вас есть расширение .rb.