routes.rb and configuration over convention

Hello there, I am new to the rails framework. I have seen that rails uses the "Convention over configuration" philosophy. Then when I create a controller "post_controller" I have to actually configure it in the routes.rb file to get it working. Is this the other way around, configuration over convention? I would expect that if the controller exist all his actions are available to be executed, and more to go actions for crud would accept the "conventional" method and have names like create, delete etc... What do you think? Correct me if I am wrong in something. Friendly and geeky, Tydeas

Try this

peterv@e6500:~/b/projects/my_contacts$ rails generate resource foo       invoke active_record       create db/migrate/20120314225352_create_foos.rb       create app/models/foo.rb       invoke rspec       create spec/models/foo_spec.rb       invoke factory_girl       create spec/factories/foos.rb       invoke controller       create app/controllers/foos_controller.rb       invoke erb       create app/views/foos       invoke rspec       create spec/controllers/foos_controller_spec.rb       invoke assets       invoke coffee       create app/assets/javascripts/foos.js.coffee       invoke scss       create app/assets/stylesheets/foos.css.scss        route resources :foos peterv@e6500:~/b/projects/my_contacts$ rails destroy resource foo       invoke active_record       remove db/migrate/20120314225352_create_foos.rb       remove app/models/foo.rb       invoke rspec       remove spec/models/foo_spec.rb       invoke factory_girl       remove spec/factories/foos.rb       invoke controller       remove app/controllers/foos_controller.rb       invoke erb       remove app/views/foos       invoke rspec       remove spec/controllers/foos_controller_spec.rb       invoke assets       invoke coffee       remove app/assets/javascripts/foos.js.coffee       invoke scss       remove app/assets/stylesheets/foos.css.scss        route resources :foos

This will also auto generate the correct routing line. Note that you can use 'destroy' to remove all auto-created files.

You might look into other rails generators with

$ rails generate

HTH,

Peter

The 14/03/12, tydeas wrote:

Hello there, I am new to the rails framework. I have seen that rails uses the "Convention over configuration" philosophy. Then when I create a controller "post_controller" I have to actually configure it in the routes.rb file to get it working. Is this the other way around, configuration over convention? I would expect that if the controller exist all his actions are available to be executed, and more to go actions for crud would accept the "conventional" method and have names like create, delete etc... What do you think? Correct me if I am wrong in something.

Convention is done the reverse way. Requesting for users/new will execute method new of class UsersController in controllers/user_controller.rb. All this naming is conventionnal.

BTW, I wouldn't expect to have routes automagically relying on controllers because controllers often doesn't have routes attached.

That’s what exactly I am trying to explain and think the issue is. You have convention on how to configure something where you should had convention to avoid configuration (at least when still in the beginning of your development process).

So let me describe what imho is proper convention over configuration in this case.

If I have a rb file in my controllers folder with is named *_controller, for example foo_controller,

then every method prefixed with action_* like action_bar is accessible through foo/bar.

This way I have a convention to avoid configuration in the first steps of my development. Then I can use routes.rb to change and configure.