Je suis donc en train d'écrire une petite gemme et j'ai un répertoire '/tasks' dans lequel se trouvent certaines tâches spécifiques de rake. Comment puis-je rendre ces tâches disponibles automatiquement partout où la gemme est requise ? Par exemple, j'aimerais pouvoir exécuter 'rake mygemrake:task' dans mon répertoire racine de rails après avoir installé la gemme.
Réponses
Trop de publicités?Pour les applications Rails3, vous pouvez envisager de créer une Railtie pour votre gemme.
Vous pouvez le faire avec :
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
Bien que j'aie eu ma part de difficultés à exiger que le rake.task
dans mon railtie.rb
. J'ai choisi de ne définir qu'une ou deux maigres tâches dans le cadre de l'initiative de l'UE. rake_tasks
bloc.
Vous pouvez écrire des tâches rake normales pour une gemme et les charger comme ceci :
require 'rake'
load 'path/to/your/tasks.rake'
Jetez également un coup d'œil à thor contre rake .