Hello, I''ve experienced a bug while trying to setup Unicorn 0.96.0 with my Rails 2.3.5 app. Some details on my system: I''m running Freebsd 8.0-p2 (amd64) with Ruby 1.9.1 and Rubygems 1.3.5. Pretty much, I tried running "unicorn_rails" in the root of my rails application, but it never loads. What happens is the master process load then it keeps trying to start the worker app but fails. I kept getting the message that I need to install Rails 2.3.5. At fist I thought I had configured something incorrectly and there was a bad reference to my gems, but no. The error message came from my Rails config/boot.rb file which is called after the gem list has been refreshed (via app.call in Unicorn). I traced through unicorn until I found that in the load_rails_gem method of the GemBoot class was raising the load error. When checking the exception message variable it told me: $ unicorn_rails I, [2010-01-11T16:20:11.330566 #23391] INFO -- : listening on addr=0.0.0.0:8080 fd=3 I, [2010-01-11T16:20:11.337793 #23391] INFO -- : worker=0 spawning... I, [2010-01-11T16:20:11.339090 #23391] INFO -- : master process ready I, [2010-01-11T16:20:11.339225 #23393] INFO -- : worker=0 spawned pid=23393 I, [2010-01-11T16:20:11.379570 #23393] INFO -- : Refreshing Gem list Missing the Rails 2.3.5 gem. Please `gem install -v=2.3.5 rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed. I, [2010-01-11T16:20:11.446208 #23391] INFO -- : reaped #<Process::Status: pid 23393 exit 1> worker=0 I, [2010-01-11T16:20:11.446461 #23391] INFO -- : worker=0 spawning... I, [2010-01-11T16:20:11.447539 #23394] INFO -- : worker=0 spawned pid=23394 I, [2010-01-11T16:20:11.488722 #23394] INFO -- : Refreshing Gem list Missing the Rails 2.3.5 gem. Please `gem install -v=2.3.5 rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed. ... etc. ... keeps going on and on and on. The exception message in GemBoot tells me: can''t activate rack (~> 1.0.0, runtime) for ["actionpack-2.3.5", "rails-2.3.5"], already activated rack-1.1.0 for ["unicorn-0.96.0"] So, I uninstalled rack 1.1.0, leaving behind just rack 1.0.1. Started up the unicorn_rails again and voila. The issue seemed to be a conflict with the rack 1.1 already being loaded by Unicorn, and when Rails begins to load and checks its dependencies, the rack version is too new for 2.3.5. I''m not sure what the fix is here, but uninstalling rack 1.1 probably is not the answer. Cheers, Peter
Peter Kieltyka <peter.kieltyka at gmail.com> wrote:> Hello, > > I''ve experienced a bug while trying to setup Unicorn 0.96.0 with my > Rails 2.3.5 app. Some details on my system: I''m running Freebsd 8.0-p2 > (amd64) with Ruby 1.9.1 and Rubygems 1.3.5. > > Pretty much, I tried running "unicorn_rails" in the root of my rails > application, but it never loads. What happens is the master process > load then it keeps trying to start the worker app but fails. I kept > getting the message that I need to install Rails 2.3.5. At fist I > thought I had configured something incorrectly and there was a bad > reference to my gems, but no. The error message came from my Rails > config/boot.rb file which is called after the gem list has been > refreshed (via app.call in Unicorn). I traced through unicorn until I > found that in the load_rails_gem method of the GemBoot class was > raising the load error. When checking the exception message variable > it told me: > > $ unicorn_rails > I, [2010-01-11T16:20:11.330566 #23391] INFO -- : listening on addr=0.0.0.0:8080 fd=3 > I, [2010-01-11T16:20:11.337793 #23391] INFO -- : worker=0 spawning... > I, [2010-01-11T16:20:11.339090 #23391] INFO -- : master process ready > I, [2010-01-11T16:20:11.339225 #23393] INFO -- : worker=0 spawned pid=23393 > I, [2010-01-11T16:20:11.379570 #23393] INFO -- : Refreshing Gem list > Missing the Rails 2.3.5 gem. Please `gem install -v=2.3.5 rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed. > I, [2010-01-11T16:20:11.446208 #23391] INFO -- : reaped #<Process::Status: pid 23393 exit 1> worker=0 > I, [2010-01-11T16:20:11.446461 #23391] INFO -- : worker=0 spawning... > I, [2010-01-11T16:20:11.447539 #23394] INFO -- : worker=0 spawned pid=23394 > I, [2010-01-11T16:20:11.488722 #23394] INFO -- : Refreshing Gem list > Missing the Rails 2.3.5 gem. Please `gem install -v=2.3.5 rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed. > ... etc. ... keeps going on and on and on. > > The exception message in GemBoot tells me: > > can''t activate rack (~> 1.0.0, runtime) for ["actionpack-2.3.5", > "rails-2.3.5"], already activated rack-1.1.0 for ["unicorn-0.96.0"] > > So, I uninstalled rack 1.1.0, leaving behind just rack 1.0.1. Started > up the unicorn_rails again and voila. The issue seemed to be a > conflict with the rack 1.1 already being loaded by Unicorn, and when > Rails begins to load and checks its dependencies, the rack version is > too new for 2.3.5. > > I''m not sure what the fix is here, but uninstalling rack 1.1 probably > is not the answer.Hi Peter, Uninstalling Rack 1.1 may be the best answer, especially if you don''t need Rack for anything else. There are several problems at hand: 1. Rails 2.3.5 declares it is only compatible with Rack 1.0.x 2. Unicorn does not require any particular Rack version 3. RubyGems defaults to the latest version of any Gem if no version is explicitly specified. Since Unicorn is loaded before Rails, RubyGems will default to loading the latest version of Rack based on the Unicorn gemspec You have several other options here to work around this, they all suck (in no particular order of suckiness): 1. edit the installed Rails/active* gemspecs[1] so they''re not pinned on on 1.0.x anymore (they *should* be compatible enough) 1a. vendorize Rails/active* and edit the gemspecs there 2. edit your copy of /path/to/unicorn_rails and activate Rack 1.0.x in there before Unicorn is activated (this is the "unicorn_rails" wrapper RubyGems creates for you, not the actual "unicorn_rails" source). 3. create a "vendored" copy of unicorn_rails for your application (script/my_unicorn) and activate Rack 1.0.x in there first. 4. install Unicorn using setup.rb without RubyGems (uninstalls/upgrades won''t be as nice to deal with, though). 5. edit the installed Unicorn gemspec[1] to depend on Rack ~> 1.0 [1] - RubyGems gemspecs are here: $prefix/lib/ruby/gems/$RUBY_VERSION/specifications/*.gemspec -- Eric Wong
On 2010-01-11, at 10:42 PM, Eric Wong wrote:> Peter Kieltyka <peter.kieltyka at gmail.com> wrote: >> Hello, >> >> I''ve experienced a bug while trying to setup Unicorn 0.96.0 with my >> Rails 2.3.5 app. Some details on my system: I''m running Freebsd 8.0-p2 >> (amd64) with Ruby 1.9.1 and Rubygems 1.3.5. >> >> Pretty much, I tried running "unicorn_rails" in the root of my rails >> application, but it never loads. What happens is the master process >> load then it keeps trying to start the worker app but fails. I kept >> getting the message that I need to install Rails 2.3.5. At fist I >> thought I had configured something incorrectly and there was a bad >> reference to my gems, but no. The error message came from my Rails >> config/boot.rb file which is called after the gem list has been >> refreshed (via app.call in Unicorn). I traced through unicorn until I >> found that in the load_rails_gem method of the GemBoot class was >> raising the load error. When checking the exception message variable >> it told me: >> >> $ unicorn_rails >> I, [2010-01-11T16:20:11.330566 #23391] INFO -- : listening on addr=0.0.0.0:8080 fd=3 >> I, [2010-01-11T16:20:11.337793 #23391] INFO -- : worker=0 spawning... >> I, [2010-01-11T16:20:11.339090 #23391] INFO -- : master process ready >> I, [2010-01-11T16:20:11.339225 #23393] INFO -- : worker=0 spawned pid=23393 >> I, [2010-01-11T16:20:11.379570 #23393] INFO -- : Refreshing Gem list >> Missing the Rails 2.3.5 gem. Please `gem install -v=2.3.5 rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed. >> I, [2010-01-11T16:20:11.446208 #23391] INFO -- : reaped #<Process::Status: pid 23393 exit 1> worker=0 >> I, [2010-01-11T16:20:11.446461 #23391] INFO -- : worker=0 spawning... >> I, [2010-01-11T16:20:11.447539 #23394] INFO -- : worker=0 spawned pid=23394 >> I, [2010-01-11T16:20:11.488722 #23394] INFO -- : Refreshing Gem list >> Missing the Rails 2.3.5 gem. Please `gem install -v=2.3.5 rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed. >> ... etc. ... keeps going on and on and on. >> >> The exception message in GemBoot tells me: >> >> can''t activate rack (~> 1.0.0, runtime) for ["actionpack-2.3.5", >> "rails-2.3.5"], already activated rack-1.1.0 for ["unicorn-0.96.0"] >> >> So, I uninstalled rack 1.1.0, leaving behind just rack 1.0.1. Started >> up the unicorn_rails again and voila. The issue seemed to be a >> conflict with the rack 1.1 already being loaded by Unicorn, and when >> Rails begins to load and checks its dependencies, the rack version is >> too new for 2.3.5. >> >> I''m not sure what the fix is here, but uninstalling rack 1.1 probably >> is not the answer. > > Hi Peter, > > Uninstalling Rack 1.1 may be the best answer, especially > if you don''t need Rack for anything else. > > There are several problems at hand: > > 1. Rails 2.3.5 declares it is only compatible with Rack 1.0.x > 2. Unicorn does not require any particular Rack version > 3. RubyGems defaults to the latest version of any Gem if > no version is explicitly specified. > > Since Unicorn is loaded before Rails, RubyGems will default to > loading the latest version of Rack based on the Unicorn gemspec > > You have several other options here to work around this, > they all suck (in no particular order of suckiness): > > 1. edit the installed Rails/active* gemspecs[1] so they''re not > pinned on on 1.0.x anymore (they *should* be compatible enough) > > 1a. vendorize Rails/active* and edit the gemspecs there > > 2. edit your copy of /path/to/unicorn_rails and > activate Rack 1.0.x in there before Unicorn is activated > (this is the "unicorn_rails" wrapper RubyGems creates for you, > not the actual "unicorn_rails" source). > > 3. create a "vendored" copy of unicorn_rails for your > application (script/my_unicorn) and activate Rack 1.0.x > in there first. > > 4. install Unicorn using setup.rb without RubyGems > (uninstalls/upgrades won''t be as nice to deal with, though). > > 5. edit the installed Unicorn gemspec[1] to depend on Rack ~> 1.0 > > > [1] - RubyGems gemspecs are here: > $prefix/lib/ruby/gems/$RUBY_VERSION/specifications/*.gemspec > > -- > Eric WongHey Eric, Thanks for the quick reply. That is pretty much what I expected. I plan to begin experimenting with Rails 3 for this project in any regards but I thought I''d bring it to your attention if others have the same issue (which some already did acknowledge it on #rubyonrails at irc.freenode.net). Strange though, on my OSX 10.6 system with the same setup (Ruby 1.9.1, Gems 1.3.5, Rack 1.1.0 & 1.0.1, and Unicorn 0.96.0) the issue doesn''t come up. Ohh well.. Peter
IƱaki Baz Castillo
2010-Jan-19 21:50 UTC
Unicorn 0.96 doesn''t play nice with Rails 2.3.5
El Lunes, 11 de Enero de 2010, Peter Kieltyka escribi?:> The exception message in GemBoot tells me: > can''t activate rack (~> 1.0.0, runtime) for ["actionpack-2.3.5", > "rails-2.3.5"], already activated rack-1.1.0 for ["unicorn-0.96.0"] > > So, I uninstalled rack 1.1.0, leaving behind just rack 1.0.1. Started up > the unicorn_rails again and voila. The issue seemed to be a conflict with > the rack 1.1 already being loaded by Unicorn, and when Rails begins to > load and checks its dependencies, the rack version is too new for 2.3.5. > > I''m not sure what the fix is here, but uninstalling rack 1.1 probably is > not the answer.I think this bug is related to a recent thread: http://www.mail-archive.com/mongrel-unicorn at rubyforge.org/msg00329.html -- I?aki Baz Castillo <ibc at aliax.net>