【问题标题】:Rake task with multiple parameters and model access not working具有多个参数和模型访问的 Rake 任务不起作用
【发布时间】:2013-09-14 19:45:03
【问题描述】:

我在运行我的 rake 任务时遇到以下错误

rake store_reports["1", "2"]
rake aborted!
Don't know how to build task 'store_reports[1,'

我的 rake 任务需要 2 个参数,并且需要访问其中的模型。这是任务

task :store_reports, [:start_date, :end_date] => :environment do |t, args|
    puts args.start_date
end

我参考了其中的两个 stackoverflow 问题,但第一个答案不起作用,在第二个中作者似乎已经解决了它,但他从未发布过答案。

rake aborted! undefined method `map' for :name:Symbol rake task with multiple parameters - I got stuck

这里有一些额外的信息。我在哪里运行 rake -T 我在那里看不到我的 rake 任务

【问题讨论】:

  • 你在哪里存储这个任务?
  • 任务在 lib/task 中
  • 我不明白为什么我的答案被删除了。问题是rails无法构建任务。如果文件位于 lib/tasks 之外的某个位置并且没有 .rake 结尾,则消息将是相同的。所以我认为我的回答是有道理的,也许不适用于这种情况,但总的来说。不幸的是,我无法取消删除或评论我的答案,所以我把它贴在这里。

标签: ruby-on-rails ruby ruby-on-rails-3 rake


【解决方案1】:

试试

rake store_reports["1","2"]

根据How to pass command line arguments to a rake task

解析器不喜欢参数之间的空格

【讨论】:

  • 我知道这是一篇旧帖子,但知道为什么 rake 任务没有出现在列表中吗?我有同样的错误
  • @Brett - 并不是解析很愚蠢,而是 shell 的工作方式。如果您输入一个空格,那么 ruby​​ 会将其视为分隔参数。您可以在整个内容周围加上引号,使其看起来像一个参数,这样可以正常工作:) 只需意识到在 ruby​​ 获取输入之前,您的 shell 会对您的输入做一些事情。
  • 仅供参考,您不应该需要在各个参数周围加上引号。在我的 macOS 终端中,我可以很好地运行 rake store_reports[1,2]
猜你喜欢
  • 1970-01-01
  • 2012-02-16
  • 2014-08-24
  • 2011-07-13
  • 1970-01-01
  • 2014-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多