Blog jak widać już nie jest aktualizowany. I raczej nie będzie. Wisi sobie ot tak, ze względów historycznych :)

Aplikacje rails 2.3.x i nowe rubygems - problemy

Krzysztof Rygielski | 2011-08-03 17:01 | Kategorie: Rails

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.