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.