Почему моя пользовательская задача rake в lib / tasks не обнаружена в Rails 3? - PullRequest
69 голосов
/ 17 апреля 2011

Встроенные грабли работают нормально, но мой новый пользовательский файл в Project / lib / tasks / payment.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)

Ответы [ 3 ]

176 голосов
/ 17 апреля 2011

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

25 голосов
/ 01 декабря 2015

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

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

0 голосов
/ 10 мая 2015

Согласно руководству по Rails 2.10 Пользовательские задачи Rake

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...