해당 파일을로드 할 수 없음 — 번 들러 / 설정 (LoadError)


128

Ruby 2.0으로 Rails 4 애플리케이션을 설정하고 있는데 "웹 애플리케이션을 시작할 수 없습니다"라는 메시지가 표시됩니다.

cannot load such file -- bundler/setup (LoadError)
  /usr/local/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:53:in `require'
  /usr/local/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:53:in `require'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/lib/phusion_passenger/loader_shared_helpers.rb:212:in `run_load_path_setup_code'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:96:in `preload_app'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:150:in `<module:App>'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:29:in `<module:PhusionPassenger>'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:28:in `<main>'

내 apache2.conf는 다음과 같습니다

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/buildout/apache2/mod_passenger.so
   PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19
   PassengerDefaultRuby /usr/local/bin/ruby

bundle -v 입니다 :

Bundler version 1.3.5

ruby -v 입니다 :

ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]

gem env 입니다 :

RubyGems Environment:
  - RUBYGEMS VERSION: 2.1.5
  - RUBY VERSION: 2.0.0 (2013-06-27 patchlevel 247) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /usr/local/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/lib/ruby/gems/1.8/bin
  - SPEC CACHE DIRECTORY: /root/.gem/specs
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/lib/ruby/gems/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /root/.gems/bin
     - /usr/lib/ruby/gems/1.8/bin/
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/bin/X11
     - /usr/games
     - /usr/sbin
     - /sbin

echo $GEM_PATH 입니다 :

/usr/lib/ruby/gems/1.8:/usr/lib/ruby/gems/1.8

GEM_PATH/usr/lib/ruby/gems/2.0?

apache2.conf의 가상 호스트 내부에 다음을 추가했습니다.

SetEnv GEM_HOME /usr/lib/ruby/gems/1.8

그리고 지금 작동하고 있습니다.

이 문제를 해결하는 올바른 방법입니까?

답변:


49

2.0을 설치하기 전에 시스템에 이전 Ruby env가 설치되어 있었습니까? 여기에는 기존 GEM_PATH가있을 수 있으며, 이는 버전 2.0 설치가 유지 한 /1.8 디렉토리로 이어집니다.

그렇다면 아마도 보석이 /1.8 디렉토리에있을 때 Passenger / Apache가 /2.0 디렉토리를보고 있다는 것이 문제였습니다. 아파치에게 /1.8 디렉토리를 사용하도록 명시 적으로 지시하면 문제를 해결하는 것이 좋습니다.

SetEnv GEM_HOME /usr/lib/ruby/gems/1.8

Ruby 버전 관리자 를 사용하여 여러 Ruby 환경을 처리 할 수도 있습니다.

Google에서 찾은 것 :


202

나는 거의 정확히 같은 오류가 있었고 간단하게 실행하여 완전히 수정할 수있었습니다.

gem install bundler

번 들러 설치가 손상되었거나 누락되었을 수 있습니다. 이것이 제 경우에 일어난 일입니다. 위의 방법으로 실패하면 다음을 시도해보십시오.

sudo gem install bundler

...하지만 일반적으로 sudo없이 할 수 있습니다.


2
이것은 나였다! 질문- sudo실제로 필요한가? 나는 사용 sudo했지만 지금은 내가하지 않았다면 무슨 일이 있었는지 궁금합니다.
Pete

2
시스템 기본값과 다른 버전의 Ruby를 사용하는 경우 사용하지 않아도됩니다 sudo! gem 버전을 sudo gem ....설치 default하고 (내 경우에는 Ubuntu 14.04) sudorvm을 실행할 수 없습니다.
Farfromunique

1
내 macOS 시스템에서는 sudo시스템 기본 루비가 필요했지만 rvm과 함께 설치된 루비 버전에는 필요하지 않았습니다.
벤 Visness

1
최근 Windows 업데이트 이후에 Linux 용 Windows 하위 시스템을 사용하는 것이이 솔루션이라고 말할 수 있습니다. 어떤 이유로 업데이트가 내 RVM 루비 설치를 망쳤습니다.
벤 풀턴

1
안녕하세요, 우분투를 사용하는 질문 gem 2.7.6ruby 2.5.0p0어떻게해야합니까?
TheCrazyProfessor

28

아마도 하나 이상의 루비가 설치되어있을 것입니다.

RVM을 사용하는 경우 다음을 실행해야합니다.

rvm use system

사용할 루비 버전을 설정합니다.

http://rvm.io/rubies/default 참조

ruby -v

현재 사용중인 버전을 알려줍니다.


25

당신은 실행할 수 있습니다 :

bundle exec rake rails:update:bin

Rails 5에서 @Dinesh가 언급했듯이 :

rails app:update:bin

10

필자의 경우 승객을 설치 한 후 아파치 구성 파일에 추가 된 줄은 다음과 같습니다.

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-.0.24/buildout/apache2/mod_passenger.so 
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.24 
PassengerDefaultRuby /usr/bin/ruby1.8

그러나 응용 프로그램에는 Ruby 2.0.0이 필요하므로 시간이 다소 걸리지 만 마지막으로 응용 프로그램의 Apache 가상 호스트 구성 파일에서 아래 'PassengerRuby'를 사용하여 다른 경로를 지정한 후에 오류가 해결되었습니다.

...
VirtualHost *:80>
  ServerName www.yourhost.com

 **PassengerRuby /home/user/.rvm/gems/ruby-2.0.0-p247**
  # !!! Be sure to point DocumentRoot to 'public'!
  DocumentRoot /somewhere/public    
  <Directory /somewhere/public>
     # This relaxes Apache security settings.
     AllowOverride all
     # MultiViews must be turned off.
     Options -MultiViews
  </Directory>
</VirtualHost...

나도 마찬가지였다. 내 경우 PassengerDefaultRuby에는 오래된 루비 설치를 언급하고있었습니다.
Waseem

8

번들이 올바르게 설치된 새로운 Rails 앱 에서이 오류가 발생했습니다. Gemfile에서 스프링 젬을 주석 처리하면 문제가 해결되었습니다.


4
이것은 나를위한 gem install spring것이지 주석 처리하는 것이 아닙니다 .
jakenberg

3

나는 같은 문제에 부딪 쳤지 만 spring보석과 구성 을 캐싱 했기 때문이라고 생각 합니다. 를 실행하여 수정했습니다 gem pristine --all.

그러면 gem 캐시에있는 파일에서 설치된 gem을 원래 상태로 복원합니다.

또는 당신은 그냥 같은 보석을 시도 할 수 있습니다

gem pristine your_gem_name

1

이것은 프로덕션 환경에서 발생했습니다.

rm /vendor/bundle

그때 bundle install --deployment

문제를 해결했습니다.


1

다른 가능한 상황 : 서버 환경에 여러 사용자가 정의되어 있습니다. 이 경우에는

passenger-config --ruby-command

nginx/sites-enabled/relevant_application유스 케이스로 파일 을 지정하는 데 필요한 명령을 제공합니다 ( 예 :

passenger-config was invoked through the following Ruby interpreter:
Command: /home/other_user/.rbenv/versions/2.4.5/bin/ruby
Version: ruby 2.4.5p335 (2018-10-18 revision 65137) [x86_64-linux]
To use in Apache: PassengerRuby /home/other_user/.rbenv/versions/2.4.5/bin/ruby
To use in Nginx : passenger_ruby /home/other_user/.rbenv/versions/2.4.5/bin/ruby
To use with Standalone: /home/other_user/.rbenv/versions/2.4.5/bin/ruby /usr/bin/passenger start

1

나는 같은 문제가 있었고 행운없이 모든 대답을 시도했다.

내가 재현 한 단계 :

  1. rvm instal 2.1.10
  2. rvm gemset create my_gemset
  3. rvm use 2.1.10@my_gemset
  4. bundle install

그러나 bundle installRails를 설치했지만 여전히 cannot load such file -- bundler/setup (LoadError)

드디어 실행 gem install rails -v 4.2고정


1

번 들러 버전으로 인해 문제가 발생할 수 있습니다.

다른 버전 번호와 함께 번 들러를 설치하십시오.

예를 들어

gem 설치 번 들러 -v 1.0.10


제 경우에는 번 들러 v2 설치 후이 오류가 발생합니다 . 로 해결합니다 gem uninstall -a bundler; gem install bundler -v '<2.0'.
SergA

0

나는 뭔가 나쁜 일이 있었기 때문에 이것을 가졌다 vendor/bundle. 로컬 개발 환경에서 Apache와 관련이 없습니다.

수정하려면 vendor\bundle을 삭제하고 다시 참조를 삭제하여 .bundle/config재사용하지 않도록하십시오.

그런 다음 번들로 다시 묶었습니다 (그 GEM_HOME대신에 설치되어 vendor/bundle문제가 사라졌습니다).


0

참고 : 호스팅 회사는 Site5.com이며 Managed VPS가 있습니다.

GEM_HOME 및 GEM_PATH 모두에 대한 env 변수를 public_html 디렉토리의 .htaccess 파일 (rails 앱의 공용 디렉토리에 대한 별명)에 추가했습니다.

이전에는 필요하지 않았으므로 호스트 측에서 무언가 변경되어야합니다. 승객 서버를 다시 시작하기 위해 restart.txt 파일을 터치 한 후이 오류가 발생했습니다.

다음을 통해 GEM_PATH를 얻었습니다.

에코 $ GEM_PATH

다음과 같이 GEM_HOME을 얻었습니다.

보석 환경

 RubyGems Environment:
   - RUBYGEMS VERSION: 2.0.14
   - RUBY VERSION: 2.0.0 (2013-11-22 patchlevel 353) [x86_64-linux]
   - INSTALLATION DIRECTORY: /home/username/ruby/gems
   - RUBY EXECUTABLE: /usr/local/ruby20/bin/ruby
   - EXECUTABLE DIRECTORY: /home/username/ruby/gems/bin
   - RUBYGEMS PLATFORMS:
     - ruby
     - x86_64-linux
   - GEM PATHS:
      - /home/username/ruby/gems
      - /usr/local/ruby2.0/lib64/ruby/gems/
   - GEM CONFIGURATION:
      - :update_sources => true
      - :verbose => true
      - :backtrace => false
      - :bulk_threshold => 1000
      - "gem" => "--remote --gen-rdoc --run-tests"
      **- "gemhome" => "/home/username/ruby/gems"**
      - "gempath" => ["/home/username/ruby/gems", "/usr/local/ruby2.0/lib64/ruby/gems/"]
      - "rdoc" => "--inline-source --line-numbers"
   - REMOTE SOURCES:
      - https://rubygems.org/

다음 줄로 .htaccess 파일을 업데이트했습니다.

SetEnv GEM_HOME /usr/local/ruby2.0/lib64/ruby/gems/
SetEnv GEM_PATH /home/username/ruby/gems:/usr/local/ruby20/lib64/ruby/gems/:/home/username/ruby/gems:/usr/

0

나에게 문제는 RVM Ruby를 승객과 연관시키는 것이 었습니다. 그래서 RVM 루비 래퍼를 승객 구성 파일에 통합해야했습니다.

다음 명령을 사용하여 rvm 루비 래퍼 경로를 찾습니다.

passenger-config --ruby-command

결과에서 경로를 가져 와서 승객 구성에 입력했습니다 nginx/passenger.conf.

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /usr/local/rvm/gems/ruby-2.3.1/wrappers/ruby;

0

테스트 레일 프로젝트를 생성하고 모든 gem을 설치하여 문제를 해결 한 다음 현재 Gemfile.lock을 테스트로 교체했으며 모든 것이 잘 작동합니다.

bundler호스팅 이있는 버전 에서이 문제가 발생한다고 생각 하기 때문에 호스팅 번 들러가 프로젝트와 동일한 버전인지 확인하십시오.


0

내 상황에서는 권한의 문제였습니다.

 sudo chmod -R +777 <your_folder_path>

-1 : 파일이나 디렉토리에 777을 두지 마십시오. "소유자", "그룹"및 "기타"사이에 분할이있는 경우 이는 보안상의 문제이기 때문입니다.
Florian Doyen

0

phusion passenger이 사용 된 루비 버전의 버전은 rails 앱과 다릅니다.

<IfModule mod_passenger.c>
  PassengerRoot /usr/local/rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/passenger-6.0.2
  PassengerDefaultRuby /usr/local/rbenv/versions/2.5.3/bin/ruby
</IfModule>

httpd config의 버전이 rails 앱과 동일한 지 확인하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.