Aplikacje rails 2.3.x i nowe rubygems - problemy
Natknąłem się ostatnio (w sumie ponownie, bo już kiedyś dawno też mnie to spotkało) na problem, kiedy aplikacja Rails 2.3.x przy uruchomieniu wypluwa taki oto komunikat:
uninitialized constant ActiveSupport::Dependencies::Mutex (NameError)
Jednym ze sposobów jest downgrade rubygems do jakiejÅ› starszej wersji. W przypadku jednej maszyny wystarczyÅ‚o, że tak wÅ‚aÅ›nie postÄ…piÅ‚em.
gem install rubygems-update -v=1.4.2 gem uninstall rubygems-update -v=/tutaj_nr_nowszej_zainstalowanej_wersji/ update_rubygems
Inne rozwiÄ…zanie, które musiaÅ‚em jednak zastosować, bo powyższego downgrade nie mogÅ‚em nie wiedzieć czemu wykonać, jest wklejenie nastÄ™pujÄ…cej linijki:
require 'thread'
do plików environment.rb, script/server
. Może być konieczne również wstawienie tej linijki do pliku boot.rb
zaraz po definicji RAILS_ROOT.
Po tych zmianach aplikacja powinna teoretycznie działać. Może to nawet i lepsze - lepiej mieć chyba nowszą wersję rubygems niż starą.
Powyższe poprawki to jednak nie byÅ‚o wszystko. NatknÄ…Å‚em siÄ™ również na problem w postaci bÅ‚Ä™du:
undefined local variable or method `version_requirements' for #<Rails::GemDependency:0xa1fb2b0> (NameError)
Wówczas rozwiÄ…zaniem jest wstawienie do environment.rb
następującego kodu:
if Gem::VERSION >= "1.3.6" module Rails class GemDependency def requirement r = super (r == Gem::Requirement.default) ? nil : r end end end end
Teraz moja stara aplikacja już wystartowaÅ‚a i dziaÅ‚aÅ‚a bez problemów.