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.