1

When we use the command rails g scaffold Post title content it will generate many files according to some templates located inside railties.

There is even a command that we can copy all templates to our application:

rake app:templates:copy

But there is one template that isn't replaced by it's counterpart inside \lib'. That's scaffold_controller/controller.rb.tt`. I'm trying to search how can I replace this with no luck so far.

So that's my question. How can I change the template that writes the controller when we are scaffolding?

mechnicov
  • 12,025
  • 4
  • 33
  • 56
Arthur Felipe
  • 1,404
  • 1
  • 13
  • 20

1 Answers1

3

1. To override controller scaffolding generator use lib/templates/rails/scaffold_controller/controller.rb.tt

echo 'Overriden for rails g scaffold' > lib/templates/rails/scaffold_controller/controller.rb.tt
rails g scaffold user > /dev/null 2>&1 && cat app/controllers/users_controller.rb
Overriden for rails g scaffold
rails g scaffold_controller posts > /dev/null 2>&1 && cat app/controllers/posts_controller.rb
Overriden for rails g scaffold

2. To override controller generator use lib/templates/rails/controller/controller.rb.tt

echo 'Overriden for rails g controller' > lib/templates/rails/controller/controller.rb.tt
rails g controller books index > /dev/null 2>&1 && cat app/controllers/books_controller.rb
Overriden for rails g controller
mechnicov
  • 12,025
  • 4
  • 33
  • 56