I spent a bit of time yesterday/today going through the Deltacloud Aggregator, updating the necessary components to work with Rails 3. Obviously I won't push for this patch to be included until Rails 3 is in Fedora, but the good news is that most everything seems to be working in the aggregator against it.
Some more work needs to be done to get the feature suite fully functional again and some additional fixes are needed for various things (mostly to not rely on rails functionality which is there but deprecated), but currently the webapp itself works as it does w/ Rails 2.3.x and the spec suite is 100% functional.
Here are some specific points of interest about this patch:
- I tested it on Fedora 14, shipping with Ruby 1.8.7, and with Rails 3 installed via 'sudo gem install rails -v 3.0.1'
- Rails 3 has many various configuration changes: * gem dependencies are now managed via Bundler and listed in the Gemfile. Install them with 'bundle install' (as opposed to 'rake gems:install' as instructed in the install docs). We actually may be able to use this to our advantage by parsing this file in our build system and using it to generate the Requires in the rpm spec
* routes.rb has been overhauled, and I had to make some changes in the app to bring things in line
* all the scripts/ have been replaced with scripts/rails
- All the gems and plugins we depend on seem to have been updated to work against Rails 3. The upstream communities seem to be on the ball regarding this matter
- I updated the spec suite to fully work against rails 3 and the updated dependencies. I also did alot to fix the cucumber feature suite, but this is not fully finished. I didn't touch the test suite at all as this is deprecated, and should be removed at somepoint soon
- Some things have been deprecated / changed in the Rails API which affect us: - overriding the 'validate' method in the models is deprected and we need to update those classes to register our own validation method (eg validate :foo_validation_method)
- authlogic doesn't work 100% with rails 3, and I had to add a small hack to app/models/user_session.rb to get things working again (see relevant comment in that file)
- error_messages for forms is not directly supported in rails 3 as it was in 2, rather its a plugin that needs to be seperately installed (and thus we need to package)
- log_error doesn't seem to be present in rails anymore, so I had to substitute it in the application controller with what the method used to do (simply log the error to the rails logger)
I'll continue to fix the app to bring it in line with the new way of doing things and we might need to change a few things here and there, but for the most part everything looks pretty good concerning supporting Deltacloud on Rails 3.
-Mo