не удается загрузить такой файл-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 I добавлено:
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 для обработки нескольких Ruby envs.
некоторые вещи, которые я нашел в Google:
у меня была почти точно такая же ошибка, и я смог полностью исправить ее, просто запустив:
gem install bundler
возможно, ваша установка bundler повреждена или отсутствует - вот что произошло в моем случае. Обратите внимание, что если выше не удается, вы можете попробовать:
sudo gem install bundler
...но вообще вы можете сделать это без sudo.
у вас, скорее всего, установлено более одного Ruby.
Если вы используете 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 by:
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/
для меня проблема заключалась в связывании RVM Ruby с пассажиром. Поэтому мне нужно было интегрировать RVM ruby wrapper в файл конфигурации пассажира.
я узнаю RVM ruby wrapper path с командой:
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
.
это восстанавливает установленные драгоценные камни в первозданное состояние из файлов, расположенных в кэше драгоценных камней.