Как упоминалось в lfender6445, использование include ApplicationHelper
, как и в ответе Арье, приведет к загрязнению области верхнего уровня, содержащей ваши задачи.
Вот альтернативное решение, позволяющее избежать этого небезопасного побочного эффекта.
Во-первых, мы должны , а не поместить наших помощников в 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
или .rake
файле в lib/tasks
:
require 'task_helpers/application_helper'
namespace :help do
task :hi do
puts ApplicationHelper.hi
end
end
Я не уверен, был ли изначально вопрос о включении помощников вида в задачи rake или просто "вспомогательные методы" для задач Rake.Но не является идеальным делиться вспомогательным файлом между представлениями и задачами.Вместо этого возьмите помощников, которые вы хотите использовать в и представлениях и задачах, и переместите их в отдельную зависимость, включенную как в помощник представления, так и в помощник задания.