Tada! Comatose finally supports Rails 1.2!
In fact, it only supports Rails 1.2 now. If you are still on Rails 1.1, don’t upgrade Comatose — It won’t work. Consider yourself warned. (version 0.7.1 is tagged, so all you Rails 1.1ers can still get to it)
OK, so I made quite a few changes whilst upgrading Comatose. No functionality was removed, yet, but enough has changed that we should hit the high points here… I’ll post a more in-depth article on the dev blog later.
First up, there’s a new configuration system. It’s quite dandy, really. It single-handedly made the DEFER_COMATOSE_LOAD and controller class hacking obsolete.
You can still use all the same old settings, only you set them in a configuration block in your environment.rb now. Here’s an example from an app I’m currently working on:
Comatose.configure do |comatose|
comatose.includes << :authenticated_system
comatose.helpers << :application_helper
# admin
comatose.admin_title = "My App's CMS"
comatose.admin_sub_title = "... its' fun for the whole family!"
comatose.admin_includes << :authenticated_system
comatose.admin_helpers << :application_helper
comatose.admin_authorization = :admin_required
comatose.default_tree_level = 1
comatose.admin_get_author do
current_user.login
end
comatose.admin_get_root_page do
roots = %w(public-root content-fragments)
roots.collect {|path| Comatose::Page.find_by_path(path)}
end
end
Look over that example closely, there’s a lot hidden in there.
comatose.includesis an array of module names (as symbols) that will be included in theComatoseController.comatose.helpersis also an array of module names, only these are loaded as helpers so you can use them in a view, most likely in your layout.
Remember, you no longer extend ComatoseController to add functionality.
* All that holds true for ComatoseAdminController and the comatose.admin_includes and comatose.admin_helpers as well.
* comatose.admin_get_author and comatose.admin_get_root_page both accept a block of code that should return the author and root_page respectively.
You can use any default controller method, as well as methods from included modules
* comatose.admin_authorization is using a method from an included module directly, the :admin_required method from the AuthenticatedSystem module.
The options that accept blocks will also accept symbols representing module methods. * Have a look at the config class for all the options
Also, there are unit tests now. Yay!
You can get an overview of the coverage, if you like. Oh, using rake test:plugins doesn’t work, to run them you will need to change into the vendor/plugins/comatose directory and run rake, after you’ve run the Comatose migrations.
From the CHANGELOG:
- Now ONLY supports Rails 1.2 (not even tested in Rails 1.1)
- New configuration system
- DEFERCOMATOSELOAD is gone — Using Dispatcher.to_prepare replaces it
- You no longer extend the base classes to add functionality. You configure Comatose to include modules and send it symbols for providing said functionality. e.g. Comatose.config.includes << :authentiationsystem; Comatose.config.authorization = :requirelogin
- The automatic loading of RAILS_ROOT/lib/comatose/*.rb files is NO longer supported.
- In addition to mapping comatoseroot in your routes.rb, you’ll want to map.comatoseadmin as well
Obviously, if you have any issues with this version, please let me know.

