2013-01-08 25 views
5

Próbuję rozszerzyć generator modelu w Railsach (model g szynowy). Zasadniczo mój generator powinien zrobić to samo co model, ale skopiować 2 dodatkowe pliki. Proste.Szyny: jak przedłużyć generator?

Sprawdziłem Railscast # 218 (http://railscasts.com/episodes/218-making-generators-in-rails-3), który był bardzo pouczający, ale nie mogłem znaleźć żadnych informacji na temat rozszerzania generatorów.

Sprawdzanie kodu źródłowego szyn, wygląda na to, że generator modeli znajduje się w lib/rails/generators/rails/model/model_generator.rb zdefiniowany jako Rails :: Generators :: ModelGenerator.

Starałem się zrobić mój generator rozszerzenie tej klasy, ale to skutkuje:

Error: uninitialized constant Rails::Generators::ModelGenerator. 

A moje próby wymagają tego pliku nie były udane.

Postanowiłem więc zatrzymać się i zapytać tutaj. Jaki jest właściwy sposób przedłużenia generatora?

+0

Czy przeczytałeś ten poradnik? http://edgeguides.rubyonrails.org/generators.html – MikDiet

+0

@Mik_Die yep, ale nie wspomina nic o rozszerzaniu generatora. Wspomina o metodzie generowania, ale nie tego chcę. Przykład: chcę zaakceptować wszystkie parametry zaakceptowane przez generator modeli. – Fernando

Odpowiedz

1

Spójrz na haczyki i wywołaj.

class MyGenerator < Rails::Generators::Base 
    def create_my_file 
    # Do your generators stuff 
    create_file "config/initializers/my.rb", "# Add content here" 
    # Create model 
    invoke("model", ["model_name", "arg1", "arg2"]) 
    end 
end 

Mam nadzieję, że ta pomoc.

1
  1. wygenerować swój własny generator:

    rails generate generator my_model 
    
  2. Otwórz lib/generators/my_model/my_model_generator.rb i zmień ją na:

    require 'rails/generators/active_record/model/model_generator' 
    
    class MyModelGenerator < ActiveRecord::Generators::ModelGenerator 
        source_root File.expand_path('../templates', __FILE__) 
    end 
    

Działa to dla silników szynach. Nie zapomnij dodać wymaganych szablonów.

Powiązane problemy