2010-06-22 2 views
17

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.

Antwort

13

(Ich weiß, dieser Beitrag ist fast ein Jahr alt, aber hoffentlich zumindest hier, um Menschen hilfreich sein, von einer Suche kommen.) Finden

ich einen Namespace-Generator für die Umsetzung (Standalone) SugarCRM Ruby gem und schrieb hier einen Blog-Post über dieses spezifische Problem: http://davidsulc.com/blog/2011/05/22/adding-a-namespaced-rails-generator-to-a-standalone-ruby-gem/

Alternativ können Sie auf die Perle des Code anschauen hier: https://github.com/chicks/sugarcrm/commit/183c1b193e6620431826c3b594c568d4592fb0af

4

Ich weiß, dass das rspec-rails Juwel einen Generator namens "rspec: install" hat, der nur ein Namensraum ist, aber vielleicht ist es ein Anfang. So ihre Quellbaum auf Github überprüfen https://github.com/rspec/rspec-rails

Sieht aus wie die Dateistruktur:

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

Ich hoffe, das Sie zu einer Lösung führen hilft! Lassen Sie uns wissen, was Sie

+0

Das funktioniert perfekt! Keine Notwendigkeit, in einem anderen 'Schienen'-Ordner zu nisten, wie in David Sulcs Antwort. –

0

das Verzeichnis für Ihre Namespace-Generator sein sollte: lib/Generatoren/my_gem

Angenommen, der Name Ihres Edelsteins ist "Mein Juwel" oder "Mein_Gemeinsam". Dies kann auch für andere Zeichen gelten, die nicht alphanumerisch sind. Wenn ein Bindestrich vorhanden ist, wird er durch einen Unterstrich ersetzt.

Dies dauerte ungefähr 4 Stunden, um herauszufinden.

Verwandte Themen