Stworzyłem generator dla kontrolera w szynach 3. Teraz chcę użyć tego generatora jako domyślnego generatora podczas korzystania z generatora rusztowania.Zastąp domyślny generator rusztowania w szynach 3
Czy to możliwe?
Stworzyłem generator dla kontrolera w szynach 3. Teraz chcę użyć tego generatora jako domyślnego generatora podczas korzystania z generatora rusztowania.Zastąp domyślny generator rusztowania w szynach 3
Czy to możliwe?
Można zastąpić szablony używane przez Railsy do generowania. W tym przypadku wystarczy umieścić plik pod numerem lib/templates/scaffold_controller/controller.rb
i zmodyfikować go w dowolny sposób. Następnym razem, gdy uruchomisz rails g scaffold [modelName]
, przejdziesz do nowego szablonu kontrolera i użyjesz go. Jest to opisane w oficjalnym przewodniku Section 6 of the Creating and Customizing Rails Generators.
Prawidłowa pozycja za dostosowanego pliku sterownika jest lib/templates/rails/scaffold_controller/controller.rb
Jeśli chcesz po prostu użyć własnego szablonu kontrolera, można po prostu umieścić go w lib/templates/rails/scaffold_controller/controller.rb
Jeśli chcesz wymienić kod sam scaffold_controller_generator
, na przykład, aby rusztowanie kontrolera generowało dodatkowe pliki klas. możesz utworzyć lib/generators/rails/my_scaffold_controller/my_scaffold_controller_generator.rb
z szablonami pod numerem lib/generators/rails/my_scaffold_controller/templates
.
Pamiętaj, aby wskazać szyn w nowym scaffold_controller w config/application.rb
:
config.generators do |g|
g.scaffold_controller = "my_scaffold_controller"
end
Dla my_scaffold_controller_generator.rb
można skopiować z gem railties pod railties-3.x.x/lib/rails/generators/rails/scaffold_controller
jeśli chcesz zmodyfikować domyślne zachowanie, czy dziedziczą z niego, jeśli tylko chcesz dodać funkcjonalność:
require 'rails/generators/rails/scaffold_controller/scaffold_controller_generator'
module Rails
module Generators
class MyScaffoldControllerGenerator < ScaffoldControllerGenerator
source_root File.expand_path("../templates", __FILE__)
def new_funtionality
end
end
end
end
To wydaje się być nieco zmieniona z Rails 4. można zobaczyć, który szablon generator będzie szukać w linii invoke, gdy rusztowanie jest generowany, A nd szablon nazwa folderu należy dopasować to:
rails generate scaffold blub
...
invoke responders_controller
Jeśli używasz szyny g blubs scaffold_controller lokalizację szablonu powinny być:
lib/templates/rails/scaffold_controller/controller.rb
Jeśli używasz g szyn rusztowania Blub położenie szablonu powinny być:
lib/templates/rails/responders_controller/controller.rb
Jeśli ktoś ja Zastanawiasz się, dlaczego to nie działa w domyślnej instalacji Rails 4, ponieważ jBurger wstawia się do ścieżki szablonu przed przesłonięciem lokalizacji. Nie potrzebuję jbuildera, więc usunąłem go, ale zgłosiłem też problem w Github. Mam nadzieję, że wkrótce zostanie naprawiony.
Link do pobrania? –
AKTUALIZACJA: lib/templates/rails/scaffold_controller/controller.rb naprawiły mój problem. miał to w lib/generators/templates/rails/scaffold_controller/controller.rb –
Twoja ścieżka nie działa dla mnie. Druga odpowiedź jest poprawna. – ujifgc
Uwaga dla każdego, kto szuka domyślnych szablonów generatora, aby dostosować, w chwili pisania ich życia w ścieżce GEM PATH w 'gems/railties-3.x.x/lib/rails/generators'. Możesz znaleźć swoją ścieżkę GEM PATH za pomocą '$> gem environment' w linii poleceń. – Leo