Не может загрузить такой файл - 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
У меня была та же проблема, и я попробовал все ответы без всякой удачи.
шаги, которые я сделал, чтобы воспроизвести:
-
rvm instal 2.1.10
-
rvm gemset create my_gemset
-
rvm use [email protected]_gemset
-
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>