Ошибки при использовании предварительно скомпилированных гемов с собственными расширениями на машинах под управлением Plesk без вариантов разработки

Я хочу, чтобы на компьютере работало приложение Ruby on Rails. Тем не менее, эта рабочая машина управляется с помощью Plesk и предоставляет только очень элементарный доступ, но обещали, что она сможет запускать приложения Ruby on Rails.

Действительно, в принципе, он способен запускать Ruby на рельсах для чересчур простого примера, но запускает любое приложение, требующее гемов с нативными расширениями (например, nokogiri, которое уже требуется приложением по умолчанию для rails, сгенерированным rails new) уже терпит неудачу.

Часть журнала выглядит так:

libruby.so.2.4: cannot open shared object file: No such file or directory - /var/www/vhosts/hosting116285.a2f45.netcup.net/test.gcsb.info/vendor/bundle/ruby/2.4.0/gems/msgpack-1.2.6-x86_64-linux/lib/msgpack/msgpack.so (LoadError)
/var/www/vhosts/hosting116285.a2f45.netcup.net/test.gcsb.info/vendor/bundle/ruby/2.4.0/gems/msgpack-1.2.6-x86_64-linux/lib/msgpack.rb:11:in `require'
...
...
...
/var/www/vhosts/hosting116285.a2f45.netcup.net/test.gcsb.info/vendor/bundle/ruby/2.4.0/gems/rack-2.0.6/lib/rack/builder.rb:55:in `initialize'
config.ru:1:in `new'
config.ru:1:in `<main>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `eval'
/usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `preload_app'
/usr/share/passenger/helper-scripts/rack-preloader.rb:156:in `<module:App>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:30:in `<module:PhusionPassenger>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<main>'

У меня есть варианты "перезапустить приложение", "установить пакеты" (который выполняет bundle install --path vendor/bundle согласно документации) и "добавить переменные окружения".

У меня очень ограниченный SSH-доступ к машине, но нет доступа ни к каким компиляторам или библиотекам.

Служба поддержки посоветовала мне "предварительно скомпилировать мои драгоценные камни", но не дала никаких конкретных советов, как это сделать. Я установил виртуальную машину для разработки, которая немного ближе к рабочей машине, но определенно не одинакова с точки зрения всех путей и, например, версии ядра Linux. Я компилирую с помощью gem-компилятора ( https://github.com/luislavena/gem-compiler), который предположительно работает нормально, но предварительно скомпилировал гемы в bundle / cache, и устанавливаю их через интерфейс Plesk.

Тем не менее, приложение продолжает выбрасывать ошибки. Предварительно скомпилированные драгоценные камни (msgpack является одним из них; изначально с родными расширениями) похоже, неправильно связаны? Я, честно говоря, понятия не имею больше. Я уже пытался упаковать свою машину для разработки libruby.so.2.4 на производственную машину, которая немного уменьшила ошибки, но не помогла их решить.

Есть ли у вас какие-либо предложения по рекомендуемой стратегии, чтобы обойти данные ограничения? Я делаю это правильно, но просто невозможно заставить его работать в этой среде?

Заранее спасибо!
Роберт

0 ответов

Другие вопросы по тегам