ruby-on-rails - generators - rake rails
¿Cómo uso ayudantes en rastrillo? (2)
Como mencionó lfender6445, el uso de include ApplicationHelper
, como en la respuesta de Arie, contaminará el alcance de nivel superior que contiene sus tareas.
Aquí hay una solución alternativa que evita ese efecto secundario inseguro.
Primero, no debemos poner a nuestros ayudantes de tareas en la app/helpers
. Para citar de "¿Dónde pongo mi código?" en codefol.io:
Los "ayudantes" de Rails son muy específicamente los ayudantes de vista. Se incluyen automáticamente en las vistas, pero no en los controladores o modelos. Eso es a propósito.
Como app/helpers
está diseñado para ayudantes de vista, y las tareas de Rake no son vistas, deberíamos poner a nuestros ayudantes de tareas en otro lugar. Recomiendo lib/task_helpers
.
En lib/task_helpers/application_helper.rb
:
module ApplicationHelper
def self.hi
"hi"
end
end
En su Rakefile
o un archivo .rake
en lib/tasks
:
require ''task_helpers/application_helper''
namespace :help do
task :hi do
puts ApplicationHelper.hi
end
end
No estoy seguro de si la pregunta originalmente era sobre la inclusión de ayudantes de visualización en tareas de rake, o simplemente "métodos de ayuda" para tareas de Rake. Pero no es ideal compartir un archivo de ayuda entre las vistas y las tareas. En su lugar, tome los ayudantes que desea usar tanto en las vistas como en las tareas, y muévalos a una dependencia separada que se incluye tanto en un ayudante de visualización como en un ayudante de tareas.
¿Puedo usar métodos de ayuda en el rastrillo?
Sí tu puedes. Simplemente necesita solicitar el archivo de ayuda y luego incluir esa ayuda dentro de su archivo de rake (que en realidad es una mezcla que podemos incluir).
Por ejemplo, aquí tengo un archivo application_helper dentro del directorio app / helpers que contiene esto:
module ApplicationHelper
def hi
"hi"
end
end
Así que aquí está el contenido de mi archivo de rastrillo:
require "#{Rails.root}/app/helpers/application_helper"
include ApplicationHelper
namespace :help do
task :hi do
puts hi
end
end
Y aquí está el resultado en mi Terminal:
god:helper-in-rake arie$ rake help:hi
hi