web-dev-qa-db-ja.com

lib / tasksのカスタムrakeタスクが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)
69
zambezi

ファイル拡張子を.rbから.rakeに変更します。

176
Michelle Tilley

この特定のケースでは、.rake拡張子によりエラーが発生しました。ただし、Rails 4.2アプリで今日も同じ問題が発生しました。これは、rakeタスクにdescがなかったためです。 descを追加する独自のタスクを作成する(つまり、タスクを生成しない)。

詳細: http://guides.rubyonrails.org/command_line.html#custom-rake-tasks

25
aceofbassgreg

Railsガイド 2.10カスタムRakeタスク

カスタムrakeタスクの拡張子は.rakeで、Rails.root/lib/tasksに配置されます。

しかし、あなたは.rb拡張子。

0
Arup Rakshit