我如何在佣金中使用佣工?

我可以在耙子中使用辅助方法吗?

是的你可以。 你只需要求助手文件,然后在你的rake文件中包含这个助手(实际上这个助手是一个我们可以包含的混合)。

例如,在这里我有一个app / helpers目录中的application_helper文件,其中包含:

module ApplicationHelper def hi "hi" end end 

所以这里是我的耙文件的内容:

 require "#{Rails.root}/app/helpers/application_helper" include ApplicationHelper namespace :help do task :hi do puts hi end end 

这是我的terminal的结果:

 god:helper-in-rake arie$ rake help:hi hi 

正如lfender6445所提到的那样,使用include ApplicationHelper (如Arie的答案)将会污染包含您的任务的顶级作用域。

这是一个避免不安全副作用的替代解决scheme。

首先,我们不应该把我们的任务助手放在app/helpers 。 引用“我的代码在哪里?” 在codefol.io:

Rails的“助手”是非常明确的看法助手。 它们自动包含在视图中,但不包含在控制器或模型中。 这是有目的的。

由于app/helpers是用于视图助手,Rake任务不是视图,所以我们应该把我们的任务助手放在别的地方。 我build议lib/task_helpers

lib/task_helpers/application_helper.rb

 module ApplicationHelper def self.hi "hi" end end 

在您的Rakefilelib/tasks一个.rake文件中:

 require 'task_helpers/application_helper' namespace :help do task :hi do puts ApplicationHelper.hi end end 

我不确定这个问题最初是关于在Rake任务中包含视图助手还是仅仅是Rake任务的“辅助方法”。 但是,跨视图和任务共享助手文件并不理想。 相反,在视图和任务中使用你想使用的助手,并把它们移到一个单独的依赖项中,这个依赖项包含在视图助手和任务助手中。