J'essaye de créer une gemme avec un générateur pour Rails 3 (beta 4). J'ai suivi these instructions, mais je ne pouvais pas le faire fonctionner. Le problème est que lorsque je définis un module dans le fichier du générateur, le générateur est listé avec 'rails generate', mais ne peut pas être exécuté car le générateur n'est pas trouvé.Créer une gemme Ruby on Rails 3 avec un générateur (y compris l'espace de noms)
à partir des instructions (ne fonctionne pas avec les 'rails génèrent my_gem: install'):
module MyGem
class InstallGenerator < Rails::Generators::Base
source_root File.expand_path("../templates", __FILE__)
# all public methods in here will be run in order
def add_my_initializer
template "initializer.rb", "config/initializers/my_gem_initializer.rb"
end
end
end
modifié (fonctionne avec « rails génèrent installation):
class InstallGenerator < Rails::Generators::Base
source_root File.expand_path("../templates", __FILE__)
# all public methods in here will be run in order
def add_my_initializer
template "initializer.rb", "config/initializers/my_gem_initializer.rb"
end
end
Cependant, je veux avoir des espaces de noms pour le générateur, par exemple company: gem_name: générateur, pour lequel je dois utiliser l'approche du module (je pense). Ma conjecture est que cela a quelque chose à voir avec la recherche et la structure du répertoire, mais je ne pouvais pas comprendre comment. J'ai essayé quelques approches:
lib
-generators
--my_gem.rb
lib
-generators
--company
---my_gem.rb
lib
-generators
--company
---my_gem_name
----my_gem.rb
mais rien n'a aidé. J'ai également trouvé un peu sur Internet, mais non si montré ce dont j'avais besoin.
Cela fonctionne parfaitement! Pas besoin de nicher dans un autre dossier 'rails' comme dans la réponse de David Sulc. –