rails generators generate example commands ruby-on-rails rake helper

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