[英]How do I use helpers in rake?
我可以在rake中使用輔助方法嗎?
是的你可以。 您只需要需要幫助文件,然后在rake文件中包含該幫助程序(實際上幫助程序是我們可以包含的mixin)。
例如,這里我在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
正如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
在你的Rakefile
或lib/tasks
的.rake
文件中:
require 'task_helpers/application_helper'
namespace :help do
task :hi do
puts ApplicationHelper.hi
end
end
我不確定這個問題是否最初是在rake任務中包含視圖助手,或者只是Rake任務的“幫助方法”。 但是在兩個視圖和任務之間共享幫助文件並不理想。 相反,在兩個視圖和任務中使用要使用的幫助程序,並將它們移動到一個單獨的依賴項中,該依賴項包含在視圖幫助程序和任務幫助程序中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.