Ruby на Rails: ошибка `require ': невозможно загрузить такой файл - bundler / setup (LoadError) - PullRequest
1 голос
/ 18 февраля 2020

Я пытаюсь настроить redmine на управляемом сервере. Установка Redmine работает, я могу запустить сервер rails и зайти на страницу Redmine локально с помощью lynx. Интеграция в Apache осуществляется через FCGI, и когда я захожу на стартовую страницу redmine в своем браузере, я получаю сообщение об ошибке сервера 500. В журналах сервера я вижу следующее:

Feb 18 01:17:12 dedi444 apache: /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- bundler/setup (LoadError)
Feb 18 01:17:12 dedi444 apache:         from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
Feb 18 01:17:12 dedi444 apache:         from /usr/www/users/admin/redmine/config/boot.rb:4:in `<top (required)>'
Feb 18 01:17:12 dedi444 apache:         from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
Feb 18 01:17:12 dedi444 apache:         from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
Feb 18 01:17:12 dedi444 apache:         from /usr/www/users/admin/redmine/startup.rb:1:in `<main>'
Feb 18 01:17:12 dedi444 apache: /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- bundler/setup (LoadError)
Feb 18 01:17:12 dedi444 apache:         from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
Feb 18 01:17:12 dedi444 apache:         from /usr/www/users/admin/redmine/config/boot.rb:4:in `<top (required)>'
Feb 18 01:17:12 dedi444 apache:         from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
Feb 18 01:17:12 dedi444 apache:         from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
Feb 18 01:17:12 dedi444 apache:         from /usr/www/users/admin/redmine/startup.rb:1:in `<main>'
Feb 18 01:17:18 dedi444 apache: [Tue Feb 18 01:17:18.386071 2020] [fcgid:info] [pid 31847:tid 140048663593024] mod_fcgid: process /usr/www/users/admin/test/dispatch.fcgi(3096) exit(communication error), terminated by calling exit(), return code: 1

Я искал сообщение об ошибке другие ответы рекомендовали установить пакет - вывод

...
Bundle complete! 27 Gemfile dependencies, 58 gems now installed.
Gems in the groups development, test and rmagick were not installed.
Bundled gems are installed into `/usr/home/admin/.gem`

РЕДАКТИРОВАТЬ дополнительная информация: я продолжил поиск ответов, возможно, проблема в GEM_PATH и ruby не могу найти комплект / настройку. Мой скрипт fcgi выглядит следующим образом:

#!/bin/dash                                                                                                                                       
export GEM_HOME="$HOME/.gem/ruby/2.3.0/"
export GEM_PATH="$GEM_HOME:/var/lib/ruby/gems/1.8"
exec /usr/bin/ruby /usr/www/users/admin/redmine/startup.rb

Как мне найти расположение «комплекта / настройки» в моей системе?

Есть идеи, что я могу сделать?

Большое спасибо, Клаус

1 Ответ

1 голос
/ 19 февраля 2020

Похоже, у вас есть двусмысленность с вашими ruby и путями драгоценных камней. Они установлены в /usr/home/admin/.gem, а fcgi пытается найти их в /usr/lib/ruby/2.3.0/rubygems/, потому что Apache не знает, где искать.

Вы должны попробовать передать переменные конфигурации env через .htaccess файл, если ваша система общего хостинга позволяет это, или через apache config

SetEnv GEM_HOME /usr/home/admin/.gem

Однако Redmine предпочтительно используется через некоторый сервер приложений (puma, thin, webrick ...) , и обратно проксируется или запускается через Passenger как модуль Apache, и предпочтительно он использует Ruby, установленный через rvm или rbenv .. .

Таким образом, в зависимости от версии может потребоваться добавить

gem "fcgi" в Gemfile и снова запустить bundle install, а также добавить эти строки в dispatch.fcgi.

require 'rubygems'
require 'fcgi'
...