rails last gemas ruby rubygems ruby-on-rails-plugins ruby-on-rails-3

last - Creación de una gema de Ruby on Rails 3 con un generador(incl. Espacio de nombres)



ruby gemas (3)

(Me doy cuenta de que esta publicación tiene casi un año de antigüedad, pero espero que esto sea al menos útil para las personas que vienen de una búsqueda).

Implementé un generador de espacio de nombre para la gema Ruby (independiente) de SugarCRM y escribí una publicación de blog sobre este tema específico aquí: http://davidsulc.com/blog/2011/05/22/adding-a-namespaced-rails-generator-to-a-standalone-ruby-gem/

Alternativamente, puedes mirar el código de la gema aquí: https://github.com/chicks/sugarcrm/commit/183c1b193e6620431826c3b594c568d4592fb0af

Estoy tratando de crear una gema con un generador para Rails 3 (beta 4). Seguí estas instrucciones , pero no pude ponerlo en marcha. El problema es que cuando estoy definiendo un módulo en el archivo del generador, el generador aparece en la lista con ''rails generar'', pero no puede ejecutarse porque no se encuentra el generador.

De las instrucciones (no funciona con ''rails genera 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

Modificado (funciona con ''railes generar 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, company: gem_name: generator, para los que 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 averiguar cómo. He intentado 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.


Sé que la gema rspec-rails tiene un generador llamado "rspec: install" que es solo un espacio de nombres, pero tal vez sea un comienzo. Así que echa un vistazo a su árbol de fuentes en github https://github.com/rspec/rspec-rails

Parece que la estructura del archivo es:

lib └ generators ├ rspec.rb └ rspec └ install └ install_generator.rb

Espero que esto ayude a llevarte a una solución! Háganos saber lo que encuentre


el directorio para su generador de espacio de nombre debe ser: lib / generators / my_gem

Esto es asumiendo que el nombre de tu gema es ''my-gem'' o ''my_gem''. Esto puede aplicarse también a otros caracteres que no sean alfanuméricos. Si hay un guión, será reemplazado por un guión bajo.

Esto me tomó cerca de 4 horas para averiguar.