Estoy tratando de crear una gema con un generador para Rails 3 (beta 4). Seguí these instructions, pero no pude hacerlo funcionar. El problema es que cuando estoy definiendo un módulo en el archivo del generador, el generador se enumera con 'rails generate', pero no se puede ejecutar porque no se encuentra el generador.Creando una gema de Ruby on Rails 3 con un generador (espacio de nombres incluido)
De las instrucciones (no funciona con 'rieles generan my_gem: instalar'):
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
Modificado (funciona con 'rieles generan instalar):
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
Sin embargo, quiero tener espacios de nombres para el generador, por ejemplo compañía: gem_name: generator, para lo cual tengo que usar el enfoque de módulo (creo). Supongo que tiene algo que ver con la búsqueda y la estructura del directorio, pero no pude entender cómo. Intenté un par de enfoques:
lib
-generators
--my_gem.rb
lib
-generators
--company
---my_gem.rb
lib
-generators
--company
---my_gem_name
----my_gem.rb
pero nada ayudó. También encontré bastante en Internet, pero no si mostraba lo que necesitaba.
¡Esto funciona perfecto! No es necesario anidar en otra carpeta 'carriles' como en la respuesta de David Sulc. –