webentwicklung-frage-antwort-db.com.de

Nicht initialisierte Konstante ActiveSupport :: Dependencies :: Mutex (NameError)

Wenn ich ein Ruby on Rails) - Projekt erstellen möchte, erhalte ich die folgende Meldung.

/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

Was ist schief gelaufen? Wie kann ich das beheben?

237
Sokmesa Khiev

Dies ist eine Inkompatibilität zwischen Rails 2.3.8 und neueren Versionen von RubyGems. Aktualisieren Sie auf die neueste 2.3-Version (2.3.11 ab heute).

137
John

Falls Sie nicht auf Ruby on Rails 2.3.11) upgraden können (und um die Antwort von douglasr zu erweitern), muss thread erforderlich sein oben boot.rb. Zum Beispiel:

require 'thread'

# Don't change this file!
# Configure your app in config/environment.rb and config/environments/*.rb
...
211
Aaron

Ich konnte dies durch ein Downgrade von RubyGems auf 1.5.3 beheben, da dies mit RubyGems 1.6.0+ und Rails <2.3.11:

gem update --system 1.5.3

Wenn Sie zuvor ein Downgrade auf eine noch frühere Version durchgeführt haben und ein Update auf 1.5.3 durchführen möchten, wird möglicherweise Folgendes angezeigt, wenn Sie versuchen, dies auszuführen:

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

Wenn Sie diesen Fehler erhalten, aktualisieren Sie, damit Sie die Version angeben und dann erneut downgraden können:

gem update --system
gem update --system 1.5.3
158
Gary S. Weaver

Sie können dieses Problem wahrscheinlich auch umgehen, indem Sie in Ihrer Anwendung als solche "Thread" anfordern:

require 'thread'

Gemäß RubyGems 1.6.0 Versionshinweise .

35
douglasr

Wenn Sie Ihre Version wie Rails ist 2.3.8 und Gem-Version ist die neueste. Sie können diese Lösung verwenden Neueste Gem mit Rails2.x . Hier einige Änderungen in der Datei boot.rb und der Datei environment.rb.

require 'thread 'in der Datei boot.rb oben.

fügen Sie in der Datei environment.rb den folgenden Code über dem Initialisierungsblock ein.

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
arunagw

Ich bin in vielen Fällen auf dieses Problem gestoßen, als ich versuchte, ein altes Rails 2.3.5 - Projekt zu starten, nachdem ich mit Rails 3> gearbeitet hatte. In meinem Fall mit löse das problem, ich muss ein rubygems update auf version 1.4.2 machen, das ist:

Sudo gem update --system 1.4.2
11
Tania R

Wenn Sie Radiant CMS verwenden, fügen Sie einfach hinzu

require 'thread'

nach oben von config/boot.rb.

(Ein großes Lob an die Antworten von Aaron und Nathanvda.)

6
thekingoftruth

Versuchen Sie, Ihre Ruby on Rails version auf v3.0.5 zu aktualisieren:

gem install Rails --version 3.0.5

oder v2.3.11:

gem install Rails --version 2.3.11

Wenn dies kein neues Projekt ist, müssen Sie Ihre Anwendung entsprechend aktualisieren. Wenn es sich um ein neues Projekt handelt, löschen Sie einfach das Verzeichnis, in dem Sie es erstellt haben, und erstellen Sie ein neues Projekt.

3
Andrew Marshall

Wie bereits erwähnt, tritt dies auf, wenn RubyGems 1.6.0 mit Ruby auf Rails Version vor Version 3 verwendet wird. Meine App verwendet Ruby auf Rails 2.3.3 in den/Anbieter des Projekts übernommen.

Zweifellos kann dieses Problem auch durch ein Upgrade von Ruby auf Rails auf eine neuere Version 2.3.X behoben werden. Dieses Problem verhindert jedoch, dass Sie Rake ausführen, um Ruby auf Rails zu enthüllen und zu aktualisieren.

Das Hinzufügen von require 'thread' am Anfang von environment.rb hat das Problem für mich nicht behoben. Das Hinzufügen von require 'thread' zu /vendor/Rails/activesupport/lib/active_support.rb hat das Problem behoben.

3
Paul Grayson

aktualisiere die Rubygems

gem update --system

1
Vishnu Atrai