Arun Agrawal’s Blog

Ruby on Rails Developer

Gem 1.5 With Rails 2.3

You may fall down into the situation where you don’t have RVM and your system gem is upgraded for using latest things. And your old application is still running on older version of rails. This is just a workaround of using Gem > 1.3.7 in Rails 2.3 Applications. I have tested this solution with Rails 2.3.5 and different version of gems. After upgrading gems to 1.6.2 i have got an error
/activesupport-2.3.5/lib/active_support/dependencies.rb:55: 
uninitialized constant ActiveSupport::Dependencies::Mutex (NameError)
To fix this error need to update boot.rb file. Place this at the top of boot.rb
require 'thread'
After adding this you should be getting this error
 
/gem_dependency.rb:119:in
 `requirement': undefined local variable or method `version_requirements'
To fix this error you need update your environment.rb file. Add this code above your Rails::Initializer.run block.
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.3.7')
 module Rails
   class GemDependency
     def requirement
       r = super
       (r == Gem::Requirement.default) ? nil : r
     end
   end
 end
end
Now your application should start running properly. Have fun ;) Now you can downgrade or upgrade your system gem version. Your application will still run. Above workaround works for me very well. Any other ideas?