не удается загрузить такой файл-bundler / setup (LoadError)


Я устанавливаю приложение Rails 4 с Ruby 2.0, но я получаю "веб-приложение не может быть запущено" и получаю эту трассировку:

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.конф я добавлено:

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

и теперь он работает.

это правильный способ исправить это?

10 101

10 ответов:

возможно, что в вашей системе был установлен предыдущий Ruby env до установки 2.0? Это могло бы иметь существующий GEM_PATH, который приводит к каталогу /1.8, который просто сохранял установку версии 2.0.

проблема, с которой вы, вероятно, столкнулись, заключалась в том, что Passenger/Apache искал в каталоге /2.0, когда на самом деле драгоценные камни были в каталоге /1.8. Ваше явное указание apache использовать каталог /1.8, таким образом, имеет смысл исправить проблема.

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

вы также можете попробовать использовать Ruby Version Manager для обработки нескольких Ruby envs.

некоторые вещи, которые я нашел в Google:

у меня была почти точно такая же ошибка, и я смог полностью исправить ее, просто запустив:

gem install bundler

возможно, ваша установка bundler повреждена или отсутствует - вот что произошло в моем случае. Обратите внимание, что если выше не удается, вы можете попробовать:

sudo gem install bundler

...но вообще вы можете сделать это без sudo.

у вас, скорее всего, установлено более одного Рубина.

Если вы используете RVM, вам, вероятно, нужно запустить:

rvm use system

чтобы установить версию ruby для использования.

см.http://rvm.io/rubies/default

ruby -v

расскажет вам версию вы используете в настоящее время.

Вы можете попробовать запустить:

bundle exec rake rails:update:bin

Как @Dinesh упоминается в Rails 5:

rails app:update:bin

в моем случае строки, добавленные в конфигурационный файл apache после установки passenger, были следующими:

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, поэтому мне потребовалось некоторое время, но, наконец, ошибка была решена после указания другого пути с помощью "PassengerRuby" ниже, в файле конфигурации виртуального хоста Apache для приложения:

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

Я получил эту ошибку в новом приложении Rails с правильно установленным пакетом. Комментируя весенний драгоценный камень в Gemfile решил проблему.

у меня было это, потому что что-то плохое было в моем vendor/bundle. Ничего общего с Apache, только в локальном dev env.

исправить, я удалил vendor\bundle, а также удалил ссылку на него в мой .bundle/config Так что он не будет повторно использоваться.

затем я повторно упаковал (который затем установлен в GEM_HOME вместо vendor/bundle и проблема ушла.

Примечание: моя хостинговая компания Site5.com и у меня есть управляемый VPS.

я добавил переменные env как для GEM_HOME, так и для GEM_PATH.файл htaccess в моем каталоге public_html (псевдоним для общего каталога в приложении rails)

они не были нужны раньше, поэтому что-то должно было измениться на стороне хозяев. Он получил эту ошибку после касания перезагрузки.txt-файл для перезапуска пассажирского сервера.

Got GEM_PATH на:

echo $GEM_PATH

получил GEM_HOME by:

gem env

 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/

для меня проблема заключалась в том, чтобы связать RVM Ruby с пассажиром. Поэтому мне нужно было интегрировать RVM ruby wrapper в файл конфигурации пассажира.

Я узнайте РВМ путь рубиновой оболочки с помощью команды:

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;

я столкнулся с той же проблемой, но я думаю, что это было связано с spring кэширование некоторых драгоценных камней и конфигураций. Я исправил это, запустив gem pristine --all.

это восстанавливает установленные драгоценные камни в первозданном состоянии из файлов, расположенных в кэше драгоценных камней.