Ich versuche, ein Juwel mit einem Generator für Rails 3 (Beta 4) zu erstellen. Ich folgte these instructions, aber ich konnte es nicht laufen lassen. Das Problem ist, dass wenn ich ein Modul in der Generator-Datei definiere, der Generator mit 'rails generate' aufgelistet wird, aber nicht ausgeführt werden kann, weil der Generator nicht gefunden wird.Erstellen eines Ruby on Rails 3 Juwel mit einem Generator (inkl. Namensraum)
Von den Anweisungen (nicht funktioniert 'Schienen my_gem erzeugen: 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
Modified (funktioniert mit ‚Schienen erzeugen installieren):
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
Allerdings möchte ich Namespaces für den Generator zu haben, z Firma: Gem_Name: Generator, für den ich den Modulansatz verwenden muss (denke ich). Meine Vermutung ist, dass es etwas mit dem Nachschlagen und der Verzeichnisstruktur zu tun hat, aber ich konnte nicht herausfinden, wie. Ich habe versucht, ein paar Ansätze:
lib
-generators
--my_gem.rb
lib
-generators
--company
---my_gem.rb
lib
-generators
--company
---my_gem_name
----my_gem.rb
aber nichts half. Ich habe auch ziemlich viel im Internet gefunden, aber nicht, wenn gezeigt, was ich brauchte.
Das funktioniert perfekt! Keine Notwendigkeit, in einem anderen 'Schienen'-Ordner zu nisten, wie in David Sulcs Antwort. –