Neapibrėžta konstanta „ActiveSupport“ :: Priklausomybės :: Mutex (NameError)

Kai noriu sukurti „Ruby on Rails“ projektą, gaunu žemiau esantį pranešimą.

 /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 

Kas nutiko? Kaip ją išspręsti?

236
03 марта '11 в 7:50 2011-03-03 07:50 nustatė Sokmesa Khiev, kovo 03 '11, 07:50 2011-03-03 07:50
@ 11 atsakymų

Tai nesuderinamumas tarp Rails 2.3.8 ir naujausių RubyGems versijų. Atnaujinkite naujausią 2.3 versiją (šiandien - 2.3.11).

137
03 марта '11 в 7:57 2011-03-03 07:57 atsakymą pateikė John 03 kovo 11 d. 7:57 2011-03-03 07:57

Jei negalite atnaujinti į Ruby on Rails 2.3.11 (ir išplėsti atsakymą į douglasr), thread turėtų būti įtraukta į boot.rb viršuje. Pavyzdžiui:

 require 'thread' # Don't change this file! # Configure your app in config/environment.rb and config/environments/*.rb ... 
211
24 марта '11 в 0:52 2011-03-24 00:52 atsakymą pateikė Aaronas kovo 24 d. 11 d. 0:52 2011-03-24 00:52

Aš galėjau išspręsti šią problemą, sumažindamas RubyGems iki 1.5.3, nes tai atsitinka su RubyGems 1.6.0+ ir Rails <2.3.11:

 gem update --system 1.5.3 

Jei anksčiau atsisakėte ankstesnės versijos ir norite atnaujinti iki 1.5.3, galite pabandyti tai padaryti:

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

Jei gausite šią klaidą, atnaujinkite ją, kad nurodytumėte versiją ir tada atnaujinkite:

 gem update --system gem update --system 1.5.3 
158
05 апр. atsakymą pateikė Gary S. Weaver 05 Bal 2011-04-05 18:29 '11, 18:29, 2011-04-05 18:29

Jūs tikriausiai galite apeiti šią problemą, reikalaudami „temą“ savo paraiškoje:

 require 'thread' 

Pagal RubyGems 1.6.0 leidinio pastabas.

35
03 марта '11 в 9:02 2011-03-03 09:02 atsakymas duotas douglasr kovo 03 '11, 9:02 2011-03-03 09:02

Jei norite išlaikyti savo versiją taip pat, kaip ir bėgiai, tai bus 2.3.8, o perlas bus paskutinė. Šį sprendimą galite naudoti „ Last Stone“ su „Rails2.x“ . Yra keletas failo boot.rb ir failo environment.rb pakeitimų.

viršutiniame faile boot.rb require 'thread “.

ir faile environment.rb pridėkite toliau nurodytą kodą virš inicijavimo bloko.

 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 
23
24 марта '11 в 8:51 2011-03-24 08:51 atsakymas pateiktas arunagw kovo 24 d., 11 val. 8:51 2011-03-24 08:51

Aš susidūriau su šia problema daugeliu atvejų, kai bandžiau pradėti senus projekto bėgius 2.3.5 po darbo su bėgiais 3>. Mano atveju, norint išspręsti šią problemą, turiu atnaujinti į 1.4.2.2 rubygem, tai yra:

 sudo gem update --system 1.4.2 
11
10 нояб. Atsakymas duotas Tania R 10 lapkričio. 2011-11-10 18:00 '11 18:00 val. 2011-11-10 18:00

Jei naudojate „Radiant CMS“, tiesiog pridėkite

 require 'thread' 

top config/boot.rb

(Kudosas į Aaroną ir nathanvda atsako.)

6
28 июня '11 в 9:51 2011-06-28 09:51 atsakymas pateikiamas Thekingoftruth birželio 28 d., 11 d., 9:51 val. 2011-06-28 09:51

Pabandykite atnaujinti į Ruby on Rails 3.0 versiją:

 gem install rails --version 3.0.5 

arba v2.3.11:

 gem install rails --version 2.3.11 

Jei tai nėra naujas projektas, turėsite atnaujinti programą. Jei tai buvo naujas projektas, tiesiog ištrinkite katalogą, kuriame jį sukūrėte, ir vėl sukurkite naują projektą.

3
03 марта '11 в 7:58 2011-03-03 07:58 atsakymą pateikė Andrew Marshall kovo 03 '11, 07:58 2011-03-03 07:58

Kaip jau minėta, tai įvyksta naudojant RubyGems 1.6.0 su Ruby on Rails versija anksčiau nei 3 versija. Mano programa naudoja Ruby on Rails 2.3.3, išleistą projekto / tiekėjo projekte.

Be abejo, Ruby on Rails atnaujinimas į naujesnę versiją 2.3.X taip pat gali išspręsti šią problemą. Tačiau ši problema neleidžia paleisti „ Rake“ paleisti „Ruby on Rails“ ir ją atnaujinti.

Pridėjus reikalaujama „sriegio“ į aplinkos viršų.rb neišsprendė problemos man. Pridėjus problemą, reikia „thread“ / pardavėjo / bėgių / activesupport / lib / active_support.rb.

3
17 марта '11 в 17:04 2011-03-17 17:04 atsakymą pateikė Paulius Graysonas kovo 17 d. 11 d. 17:04 2011-03-17 17:04

atnaujinkite rubygems

perlas atnaujinimas - sistema

1
05 сент. Atsakymą pateikė Vishnu Atrai. 2012-09-05 18:01 '12 at 18:01 pm 2012-09-05 18:01

Aš siunčiu savo sprendimą kitoms sieloms, kurioms neteko miego:

Jei naudojate RVM, patikrinkite, ar esate teisingame aplanke, naudodami teisingą rubino versiją ir gemset. Atidariau daug terminalų skirtukų, o vienas iš jų buvo kitame kataloge. įvedant „bėgių konsolę“, atsirado klaida, nes mano numatytasis paskirstymas yra 2.3.x.

Aš pastebėjau klaidą, cd'd į teisingą katalogą, ir mano .rvmrc failas padarė likusią.

RVM nėra kaip Git. Git, keičiant šakas viename korpuse, jis keičiasi visur. Tai pažodžiui perrašo aptariamus failus. Kita vertus, RVM paprasčiausiai nustato korpuso kintamuosius ir turi būti įdiegti kiekvienam atidarytam korpusui.

Jei nesate susipažinę su .rvmrc, galite įdėti failą su šiuo pavadinimu bet kuriame kataloge, o rvm jį paims ir naudos jame nurodytą versiją / gemset su kiekvienu šio katalogo pakeitimu. Štai pavyzdys .rvmrc failas:

 rvm use 1.9.2@turtles 

Tai leis jums naujovinti į naujausią RVM kolekcijos ruby ​​1.9.2 versiją, naudodami vėžlių gemezę. Dabar galite atidaryti šimtą skirtukų terminale (kaip ir aš) ir nerimauti dėl rubino versijos.

-1
21 сент. Atsakymą pateikė Jaime Bellmyer 21 sep . 2011-09-21 22:50 '11 10:50 val. 2011-09-21 22:50