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