Uninitialized constant ActiveSupport:: Dependencies:: Mutex (NameError)

Kiedy chcę stworzyć projekt Ruby on Rails, otrzymuję wiadomość poniżej.

/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:55: uninitialized constant ActiveSupport::Dependencies::Mutex (NameError)
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support.rb:57
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/rails_generator.rb:31
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require'
    from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
    from /usr/lib/ruby/gems/1.8/gems/rails-2.3.8/bin/rails:15
    from /usr/bin/rails:19:in `load'
    from /usr/bin/rails:19
Co poszło nie tak? Jak to naprawić?
Author: Peter Mortensen, 2011-03-03

11 answers

Jest to niezgodność pomiędzy Rails 2.3.8 a najnowszymi wersjami RubyGems. Aktualizacja do najnowszej wersji 2.3(2.3.11 od dziś).

 137
Author: John,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-03 04:57:02

W przypadku, gdy nie możesz uaktualnić do Ruby on Rails 2.3.11 (i rozszerzyć na odpowiedź Douglasa), thread musi być wymagane na górze boot.rb. Na przykład:

require 'thread'

# Don't change this file!
# Configure your app in config/environment.rb and config/environments/*.rb
...
 211
Author: Aaron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-13 21:29:53

Udało mi się to naprawić, obniżając RubyGems do 1.5.3, ponieważ dzieje się to z RubyGems 1.6.0+ i Rails

gem update --system 1.5.3

Jeśli wcześniej zmieniłeś wersję na wcześniejszą i chcesz zaktualizować ją do wersji 1.5.3, możesz uzyskać następujące informacje podczas próby uruchomienia:

Updating RubyGems
ERROR:  While executing gem ... (RuntimeError)
    No gem names are allowed with the --system option

Jeśli pojawi się ten błąd, zaktualizuj, aby umożliwić określenie wersji, a następnie ponownie obniż wersję:

gem update --system
gem update --system 1.5.3
 158
Author: Gary S. Weaver,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-15 14:11:59

Możesz również obejść ten problem, wymagając "wątku" w swojej aplikacji jako takiej:

require 'thread'

Zgodnie z RubyGems 1.6.0 Uwagi do wydania .

 35
Author: douglasr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-03-03 06:02:12

Jeśli chcesz, aby Twoja wersja była taka sama jak rails, będzie 2.3.8, a wersja gem będzie najnowsza. Możesz użyć tego rozwiązania najnowszy klejnot z Rails2.x . w tym kilka zmian w rozruchu.plik rb i środowisko.plik rb.

require 'thread' w bagażniku.plik rb na górze.

I w środowisku.plik rb Dodaj następujący kod nad blokiem inicjującym.
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
 24
Author: arunagw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-18 21:19:39

Miałem do czynienia z tym problemem wiele razy, kiedy próbuję uruchomić stary projekt rails 2.3.5 po pracy z rails 3>. W moim przypadku, aby rozwiązać problem, muszę wykonać aktualizację rubygems do wersji 1.4.2, to jest:

sudo gem update --system 1.4.2
 11
Author: Tania R,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-10 15:00:04

Jeśli używasz Radiant CMS, po prostu dodaj

require 'thread'

Do góry config/boot.rb.

(Wyrazy uznania dla odpowiedzi Aarona i nathanvdy.)
 6
Author: thekingoftruth,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-06-28 06:51:24

Jak wspomniano, dzieje się to podczas używania RubyGems 1.6.0 z Ruby on Rails w wersji wcześniejszej niż wersja 3. Moja aplikacja używa Ruby on Rails 2.3.3 vendored do / vendor projektu.

Bez wątpienia aktualizacja Ruby on Rails do nowszej wersji 2.3.Wersja X może również rozwiązać ten problem. Jednak ten problem uniemożliwia uruchomienie Rake do unvendor Ruby on Rails i uaktualnienie go.

Dodanie require 'thread' do górnej części środowiska.rb nie naprawił problemu dla mnie. Dodanie wymaganego 'thread' do / vendor / rails/activesupport/lib / active_support.rb naprawił problem.

 3
Author: Paul Grayson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-22 19:32:31

Spróbuj zaktualizować swoją wersję Ruby on Rails do v3. 0. 5:

gem install rails --version 3.0.5

Lub v2.3.11:

gem install rails --version 2.3.11

Jeśli nie jest to nowy projekt, będziesz musiał odpowiednio uaktualnić swoją aplikację. Jeśli był to nowy projekt, po prostu usuń katalog, w którym go utworzyłeś i utwórz nowy projekt ponownie.

 3
Author: Andrew Marshall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-24 12:51:09

Update the rubygems

Gem update --system

 1
Author: Vishnu Atrai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-05 15:01:38

Zamieszczam moje rozwiązanie dla innych pozbawionych snu dusz:

Jeśli używasz RVM, sprawdź dwukrotnie, czy znajdujesz się we właściwym folderze, używając poprawnej wersji ruby i gemset. Miałem otwartą tablicę kart terminala, a jedna z nich była w innym katalogu. wpisanie "rails console" spowodowało błąd, ponieważ moja domyślna Dystrybucja rails to 2.3.x.

Zauważyłem błąd z mojej strony, cd ' D do poprawnego katalogu, i mój .plik rvmrc zrobił resztę.

RVM jest Nie jak Git. W git, zmiana gałęzi w jednej powłoce zmienia ją wszędzie. Dosłownie przepisuje te pliki. Z drugiej strony, RVM ustawia Zmienne powłoki i musi być ustawiane dla każdej nowej powłoki, którą otwierasz.

W przypadku, gdy nie jesteś zaznajomiony z .rvmrc, możesz umieścić plik o tej nazwie w dowolnym katalogu, a rvm odbierze go i użyje podanej w nim wersji / gemset, za każdym razem, gdy zmienisz ten katalog. Oto próbka .rvmrc plik:

rvm use 1.9.2@turtles

To przełączy się na najnowszą wersję ruby 1.9.2 w Twojej kolekcji RVM, używając gemsetu "turtles". Teraz możesz otworzyć sto kart w Terminalu (tak jak ja to robię) i nigdy nie martwić się o wersję ruby, na którą wskazuje.

 -1
Author: Jaime Bellmyer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-21 19:50:40