Ari*_*rie 69
是的你可以.您只需要需要帮助文件,然后在rake文件中包含该帮助程序(实际上帮助程序是我们可以包含的mixin).
例如,这里我在app/helpers目录下有一个application_helper文件,其中包含:
module ApplicationHelper
def hi
"hi"
end
end
Run Code Online (Sandbox Code Playgroud)
所以这是我的rake文件的内容:
require "#{Rails.root}/app/helpers/application_helper"
include ApplicationHelper
namespace :help do
task :hi do
puts hi
end
end
Run Code Online (Sandbox Code Playgroud)
这是我终端上的结果:
god:helper-in-rake arie$ rake help:hi
hi
Run Code Online (Sandbox Code Playgroud)
Max*_*ace 15
正如lfender6445所提到的include ApplicationHelper那样,在Arie的回答中使用将污染包含您的任务的顶级范围.
这是一种避免不安全副作用的替代解决方案.
首先,我们应该不会把我们的任务佣工app/helpers.引用"我在哪里放我的代码?" 在codefol.io:
Rails"助手"是非常具体的视图助手.它们会自动包含在视图中,但不会包含在控制器或模型中.这是故意的.
既然app/helpers是用于视图助手,而Rake任务不是视图,我们应该将我们的任务助手放在其他地方.我推荐lib/task_helpers.
在lib/task_helpers/application_helper.rb:
module ApplicationHelper
def self.hi
"hi"
end
end
Run Code Online (Sandbox Code Playgroud)
在您Rakefile或您的.rake文件中lib/tasks:
require 'task_helpers/application_helper'
namespace :help do
task :hi do
puts ApplicationHelper.hi
end
end
Run Code Online (Sandbox Code Playgroud)
我不确定这个问题最初是否是在rake任务中包含视图助手,或者只是Rake任务的"帮助方法".但是在两个视图和任务之间共享帮助文件并不理想.相反,在两个视图和任务中使用要使用的帮助程序,并将它们移动到一个单独的依赖项中,该依赖项包含在视图助手和任务助手中.
| 归档时间: |
|
| 查看次数: |
18605 次 |
| 最近记录: |