error with OPTION in Rails:Edge

Hi,

With the announce of release to Rails 2.0 PR. I want test it on my own web-application. So to test it, I have made as say in DHH announce[1]:

rake rails:freeze:edge TAG=rel_2-0-0_PR

But after a rake rails:update and a script/server start, I have an error. I paste the error in pastie[2].

In my system, I have the gem of 1.2.3 Rails.

For another test I have install the gem of 2.0 PR ( gem install rails --source http://gems.rubyonrails.org ). So after this install I have not problem. My application run correctly.

But If I uninstall this new gem to leave the old. The error become again. I don't know what I have this error. I have test on another PC and no problem.

Have you an idea ?

[1] : Ruby on Rails — Rails 2.0: Preview Release [2] : Parked at Loopia

I've hit this a couple times, but I don't remember the _exact_ cause and fix.

I _believe_ that what's happening is that mongrel is being double loaded due to a bad require (check your environment.rb). The second time it's loaded, the OPTIONS array hasn't been modified to be an OptionParser (which makes it a singleton), so it bails on that run.

"warning: already initialized constant OPTIONS" is an indicator. Double check your requires in environment.rb, and you may want to just put some printf debugging in rails/railties/lib/commands/servers/mongrel.rb. Just have it raise, and catch, and print the backtrace. It'll let you know where it's being loaded twice.

And do report back. I don't remember the exact cause, but it'd be nice to have it sitting on a mailing list somewhere to refer back to.

I just hit this the same error a couple days ago against plain 1.2.3, and I can confirm that I had a bad require in my environments.rb.

- Rob

rails:freeze:edge downloads only %w(actionpack activerecord actionmailer activesupport actionwebservice), but Rails 2.0 Initializer wants to load [:active_record, : action_controller, :action_view, : action_mailer, :active_resource]. Yeah, ActiveResource breaks your apps.

Solution?

  1. config.frameworks -= [ :active_resource ]
  2. do an svn checkout and symlink to it from vendor/rails (recommended, you can switch easily between trunk and PR)

Thanks, It's really this issue and now it's fixed.

You may want to also take a look at this bug report that I filed. I had the same problem and running the 'rake rails:freeze:edge TAG=rel_2-0-0_PR' TWO times resolved the issue for me when upgrading a 1.2.3 app. Explanation in the bug report.

http://dev.rubyonrails.org/ticket/9743

Glenn

I created a patch about 3 months ago to fix the rake task. Check out http://dev.rubyonrails.org/ticket/8717. Mislav's patch looks more comprehensive though.