Así que estoy escribiendo una pequeña joya y tengo un directorio '/ tasks' con algunas tareas específicas de rake. ¿Cómo hago que esas tareas estén disponibles automáticamente en todas partes, donde se requiere la gema? Por ejemplo, me gustaría poder ejecutar 'rake mygemrake: task' dentro de mi directorio raíz de rails después de instalar la gema.¿La tarea de rastrillo de la gema está disponible en todas partes?
Respuesta
Consulte el rdoctask en rake para ver un ejemplo de cómo definir una tarea proporcionada por una gema. La tarea se define en el rubí en lugar del idioma rastrillo de construcción y se puede requerir de este modo:
require 'rake' # the gem
require 'rake/rdoctask' # the task
Eso es lo que es para Sake. Datamapper y Merb han estado usando Sake con éxito.
Tiene que importar esas tareas en el Rakefile de la aplicación. Así es como se ve en la mía (yo estoy usando bundler08 para gestionar mis joyas):
%w(gem1 gem2 gem3).each do |g|
Dir[File.dirname(__FILE__) + "/vendor/bundler_gems/**/#{g}*/tasks/*.rake"].each do |f|
import f
end
end
Para aplicaciones Rails3, es posible que desee ver en hacer un Railtie para su joya.
Puede hacerlo con:
lib/your_gem/railtie.rb
require 'your_gem'
require 'rails'
module YourGem
class Railtie < Rails::Railtie
rake_tasks do
require 'path/to/rake.task'
end
end
end
lib/your_gem.rb
module YourGem
require "lib/your_gem/railtie" if defined?(Rails)
end
Aunque, tuve mi parte de dificultades al requerir el archivo rake.task
en mi railtie.rb
. Opté por simplemente definir mis tareas una o dos en el bloque rake_tasks
.
Puede escribir las tareas normales del rastrillo para una joya y cargarlos como esto:
require 'rake'
load 'path/to/your/tasks.rake'
También, echar un vistazo a thor vs. rake.
- 1. Exigir una gema dentro de la tarea de rastrillo de una gema
- 2. Qt :: WA_TranslucentBackground disponible en todas partes?
- 3. rastrillo variable de tarea
- 4. Tarea de rastrillo de Crontab?
- 5. Rastrillo Tarea pedidos
- 6. Hormiga y la tarea disponible: ¿y si algo no está disponible?
- 7. Pass hash como parámetro a Rastrillo Tarea
- 8. Ocultar cursor en todas partes
- 9. ¿Cómo hago una lista de todas las versiones de una gema disponible en un sitio remoto?
- 10. ¿Está disponible la API Zeroconf en Android?
- 11. Cómo copio un archivo de una gema a mi aplicación de rieles usando rastrillo
- 12. Carga de un archivo local durante la tarea de rastrillo heroku
- 13. WordPress con phpMyAdmin - 404 en todas partes
- 14. averiguar si la consola está disponible
- 15. Pruebe si la intención está disponible
- 16. Prueba si la conversión implícita está disponible
- 17. Android OpenGL ES ¿Soporte en todas partes?
- 18. ¿FTS está disponible en la versión iOS de SQLite?
- 19. Esquema de frijoles ya no está disponible en la Web?
- 20. ¿Por qué "android:" en todas partes?
- 21. El HttpContext.Current.Cache está disponible para todas las sesiones
- 22. ¿Está disponible la plataforma Django Book?
- 23. mensajes y resultados de pruebas aparece después de ejecutar la tarea en el rastrillo de aplicación Rails
- 24. Rails Tarea de fondo de la tarea
- 25. por qué la gema aún está desactualizada después de la actualización del paquete
- 26. ¿Borrar todas las actividades en una tarea?
- 27. Error de OutOfMemory aunque la memoria libre está disponible
- 28. Está disponible la indexación basada en cero en MATLAB
- 29. Haciendo que la configuración esté disponible para todas las clases
- 30. La página principal de Oracle 10g express no está disponible
Solo una palabra de advertencia, no pude hacer que Rails requiera tareas 'rake' con una extensión' .rake' con este método. –
Creo que recuerdo que el error es algo parecido a lo que se describe aquí: http://blog.smartlogicsolutions.com/2009/05/26/including-rake-file-external-in-your-projects-rakefile-keep -your-rake-tasks-organized/ quizás usar 'import' en lugar de' require' es la clave del éxito? Voy a profundizar en esta próxima oportunidad Tengo un momento libre :) –
Lo que hice fue utilizar '.rb' en su lugar. Problema resuelto. :) –