복붙노트

[RUBY-ON-RAILS] 초기화되지 않은 상수의 ActiveSupport :: 종속성 :: 뮤텍스 (나가서 설명하자면 NameError)

RUBY-ON-RAILS

초기화되지 않은 상수의 ActiveSupport :: 종속성 :: 뮤텍스 (나가서 설명하자면 NameError)

나는 루비 온 레일스 프로젝트를 생성 할 때, 나는 아래의 메시지가 나타납니다.

/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

무슨 일이 사라 잘못이있다? 어떻게 그것을 해결하기 위해 무엇입니까?

해결법

  1. ==============================

    1.이 레일 2.3.8과 젬의 최신 버전 간의 비 호환성이다. 최신 2.3 버전 (오늘 같은 2.3.11)으로 업그레이드합니다.

    이 레일 2.3.8과 젬의 최신 버전 간의 비 호환성이다. 최신 2.3 버전 (오늘 같은 2.3.11)으로 업그레이드합니다.

  2. ==============================

    2.혹시 레일 2.3.11에 루비로 업그레이드 할 수 없습니다 (그리고 douglasr의 대답에 확장), 스레드는 boot.rb.의 상단에 요구해야한다 예를 들면 :

    혹시 레일 2.3.11에 루비로 업그레이드 할 수 없습니다 (그리고 douglasr의 대답에 확장), 스레드는 boot.rb.의 상단에 요구해야한다 예를 들면 :

    require 'thread'
    
    # Don't change this file!
    # Configure your app in config/environment.rb and config/environments/*.rb
    ...
    
  3. ==============================

    3.나는 젬 1.6.0+ 및 레일 <2.3.11로 발생하기 때문에, 1.5.3에 젬을 다운 그레이드하여이 문제를 해결할 수 있었다 :

    나는 젬 1.6.0+ 및 레일 <2.3.11로 발생하기 때문에, 1.5.3에 젬을 다운 그레이드하여이 문제를 해결할 수 있었다 :

    gem update --system 1.5.3
    

    이전에 더 이전 버전으로 다운 그레이드하고 1.5.3로 업데이트 할했다면 그것을 실행하려고 할 때, 다음을 얻을 수 있습니다 :

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

    당신은 다시 다운 그레이드 다음 버전을 지정하고 있습니다 그래서 그 오류, 다음 업데이 트를 얻을 경우 :

    gem update --system
    gem update --system 1.5.3
    
  4. ==============================

    4.또한 가능성과 같은 응용 프로그램에서 '스레드'를 요구함으로써이 문제를 주변에 얻을 수 있습니다 :

    또한 가능성과 같은 응용 프로그램에서 '스레드'를 요구함으로써이 문제를 주변에 얻을 수 있습니다 :

    require 'thread'
    

    루비 젬 1.6.0 릴리스 노트에 따라.

  5. ==============================

    5.당신이 동일한 버전을 유지하려면 레일 2.3.8되며 보석 버전은 최신 될 것 같은. 당신은 Rails2.x이 솔루션 최신 보석을 사용할 수 있습니다. boot.rb 파일과 environment.rb에 파일이 일부 변경된다.

    당신이 동일한 버전을 유지하려면 레일 2.3.8되며 보석 버전은 최신 될 것 같은. 당신은 Rails2.x이 솔루션 최신 보석을 사용할 수 있습니다. boot.rb 파일과 environment.rb에 파일이 일부 변경된다.

    상단에 boot.rb 파일에서 '스레드'를 필요로한다.

    및 environment.rb에 파일의 초기화 블록 위에 다음 코드를 추가합니다.

    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
    
  6. ==============================

    6.나는 2.3.5 프로젝트 레일 3 일 후에 오래된 레일을 시작하려고 할 때> 많은 occassions에이 문제에 직면했다. 문제를 해결하기 위해 내 경우, 나는 버전 1.4.2에 젬 업데이트를 수행해야합니다,이 있습니다 :

    나는 2.3.5 프로젝트 레일 3 일 후에 오래된 레일을 시작하려고 할 때> 많은 occassions에이 문제에 직면했다. 문제를 해결하기 위해 내 경우, 나는 버전 1.4.2에 젬 업데이트를 수행해야합니다,이 있습니다 :

    sudo gem update --system 1.4.2
    
  7. ==============================

    7.당신이 방사 CMS를 사용하는 경우, 단순히 추가

    당신이 방사 CMS를 사용하는 경우, 단순히 추가

    require 'thread'
    

    설정 / boot.rb의 상단.

    (아론의 및 nathanvda의 답변 했네.)

  8. ==============================

    8.언급 한 바와 같이 프로젝트의 / 공급 업체에 vendored 레일 2.3.3에 루비를 사용하고 레일에 루비 버전 이전의 내 애플 3. 버전보다 함께 젬 1.6.0을 사용하는 경우에 발생합니다.

    언급 한 바와 같이 프로젝트의 / 공급 업체에 vendored 레일 2.3.3에 루비를 사용하고 레일에 루비 버전 이전의 내 애플 3. 버전보다 함께 젬 1.6.0을 사용하는 경우에 발생합니다.

    없음이 문제를 해결할 수있는 새로운 인 2.3.x 버전으로 루비 온 레일즈의 업그레이드를 의심하지 않습니다. 그러나이 문제를 방지 당신은 레일에 unvendor 루비 레이크을 실행하고 업그레이드 할 수 있습니다.

    나를 위해 문제가 해결되지 않은 environment.rb에의 상단에 '스레드'를 필요로 추가. 문제가 해결 되었습니까 /vendor/rails/activesupport/lib/active_support.rb에 '스레드'를 필요로 추가.

  9. ==============================

    9.v3.0.5에 레일 버전에 루비를 업데이트하십시오 :

    v3.0.5에 레일 버전에 루비를 업데이트하십시오 :

    gem install rails --version 3.0.5
    

    또는 v2.3.11 :

    gem install rails --version 2.3.11
    

    이 새로운 프로젝트가 아닌 경우 그에 따라 응용 프로그램을 업그레이드해야합니다. 이 새로운 프로젝트라면, 당신이 그것을 만든 디렉토리를 삭제하고 다시 새 프로젝트를 만들 수 있습니다.

  10. ==============================

    10.루비 젬를 업데이트

    루비 젬를 업데이트

    보석 업데이트 --system

  11. ==============================

    11.나는 거기 다른 수면 박탈 영혼에 대한 내 솔루션을 게시하도록하겠습니다 :

    나는 거기 다른 수면 박탈 영혼에 대한 내 솔루션을 게시하도록하겠습니다 :

    당신은 당신이 올바른 루비 버전과 gemset를 사용하여 올바른 폴더에 걸 RVM 두 번 검사를 사용하는 경우. 나는 열린 터미널 탭의 배열을 가지고 있었고, 그 중 하나는 다른 디렉토리에 있었다. 내 기본 배포판 2.3.x.입니다 레일 때문에 입력 "콘솔 레일은"오류 발생

    나는 올바른 디렉토리에 cd'd 내 부분에 오류를 발견, 내 .rvmrc 파일은 나머지를했다.

    RVM은 힘내처럼되지 않습니다. 자식, 하나 개의 셀에 지점을 변경하면 모든 곳을 변경합니다. 말 그대로 문제의 파일을 다시 작성합니다. RVM은, 다른 한편으로는, 단지 쉘 변수를 설정하는 것입니다, 당신은 열 때마다 새로운 쉘 설정해야합니다.

    혹시 .rvmrc에 익숙하지 않은, 당신은 어떤 디렉토리에 그 이름을 가진 파일을 넣을 수 있습니다, 당신은 그 디렉토리로 변경할 때마다 RVM은 gemset 그 안에 지정된 / 그것을 선택하고 버전을 사용합니다. 다음은 샘플 .rvmrc 파일입니다 :

    rvm use 1.9.2@turtles
    

    이것은 gemset "거북이"를 사용하여, 당신의 RVM 컬렉션 루비 1.9.2의 최신 버전으로 전환됩니다. 지금 당신은 (내가 일을 끝낼로) 터미널에서 백 개 탭을 열고 그것을 가리키는 것 루비 버전에 대해 걱정하지 않을 수 있습니다.

  12. from https://stackoverflow.com/questions/5176782/uninitialized-constant-activesupportdependenciesmutex-nameerror by cc-by-sa and MIT license