Не может загрузить такой файл - 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.conf я добавил:

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

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

Правильно ли это можно исправить?

Ответ 1

Может быть, в вашей системе был установлен предыдущий 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-сред.

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

Ответ 2

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

gem install bundler

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

sudo gem install bundler

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

Ответ 3

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

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

rvm use system

чтобы установить версию рубина.

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

ruby -v

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

Ответ 4

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

bundle exec rake rails:update:bin

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

rails app:update:bin

Ответ 5

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

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

Ответ 6

Я получил эту ошибку в новом Rails-приложении с правильно установленным пакетом. Комментирование жемчуга spring в Gemfile разрешило проблему.

Ответ 7

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

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

Ответ 8

Это происходило в производственной среде для меня.

rm/vendor/bundle

затем bundle install --deployment

решил проблему.

Ответ 9

Другая возможная ситуация: у вас есть несколько пользователей, определенных в вашей серверной среде. В этом случае работает

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

Ответ 10

У меня была та же проблема, и я попробовал все ответы без всякой удачи.

шаги, которые я сделал, чтобы воспроизвести:

  1. rvm instal 2.1.10
  2. rvm gemset create my_gemset
  3. rvm use [email protected]_gemset
  4. bundle install

Тем не менее, bundle install установлен Rails, но я до сих пор не cannot load such file -- bundler/setup (LoadError)

наконец-то запущенные gem install rails -v 4.2 исправили это

Ответ 11

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

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

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

Ответ 12

ПРИМЕЧАНИЕ. Моя хостинговая компания - сайт Site5.com, и у меня есть управляемый VPS.

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

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

Got_PATH:

echo $GEM_PATH

Получил GEM_HOME:

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/

Ответ 13

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

Я узнал путь обертки rvm ruby ​​с командой:

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;

Ответ 14

Версия Bundler может быть причиной проблемы.

Пожалуйста, установите пакет с другим номером версии.

Например,

пакет установки gem -v 1.0.10

Ответ 15

Я исправил эту проблему, создав проект тестовых рельсов и установив все гемы, затем заменил свой текущий Gemfile.lock на тест, и все работает нормально.

Я думаю, что это проблема с версиями bundler с хостингом, поэтому, пожалуйста, убедитесь, что пакет хостинга совпадает с версией вашего проекта.

Ответ 16

В моей ситуации это было связано с разрешениями:

 sudo chmod -R +777 <your_folder_path>