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

时间:2009-09-20 02:18:51

标签: ruby-on-rails rake helper

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

2 个答案:

答案 0 :(得分:65)

是的,你可以。您只需要需要帮助文件,然后在rake文件中包含该帮助程序(实际上帮助程序是我们可以包含的混合文件)。

例如,我在 app / helpers 目录中有一个 application_helper 文件,其中包含以下内容:

module ApplicationHelper
  def hi
    "hi"
  end
end

所以这是我的rake文件的内容:

require "#{Rails.root}/app/helpers/application_helper"
include ApplicationHelper

namespace :help do
  task :hi do
    puts hi
  end
end

这是我的终端上的结果:

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

答案 1 :(得分:13)

正如lfender6445所提到的那样,使用include ApplicationHelper,就像在Arie的回答中一样,将污染包含你的任务的顶级范围。

这是一种避免不安全副作用的替代解决方案。

首先,我们应该将我们的任务助手放在app/helpers中。在codefol.io上引用"Where Do I Put My Code?"

  

Rails“助手”是非常具体的视图助手。它们会自动包含在视图中,但不会包含在控制器或模型中。这是故意的。

由于app/helpers用于视图助手,而Rake任务不是视图,因此我们应该将我们的任务助手放在其他位置。我推荐lib/task_helpers

lib/task_helpers/application_helper.rb

module ApplicationHelper
  def self.hi
    "hi"
  end
end

Rakefile中的.rakelib/tasks文件:

require 'task_helpers/application_helper'

namespace :help do
  task :hi do
    puts ApplicationHelper.hi
  end
end

我不确定这个问题最初是在询问是否在rake任务中包含视图助手,或者仅仅是Rake任务的“辅助方法”。但是在两个视图和任务之间共享帮助文件并不理想。相反,请在两个视图和任务中使用要使用的帮助程序,并将它们移动到一个单独的依赖项中,该依赖项包含在视图帮助程序和任务帮助程序中。