Как использовать Bundler с неинтерактивными удаленными сеансами S SH - PullRequest
0 голосов
/ 06 февраля 2020

У меня проблема с удаленным запуском команды через неинтерактивный сеанс S SH в Ubuntu 14.04. сервер.

Я хочу запустить команду связки для выполнения сборки Jekyll. Если IS SH в интерактивную оболочку на моем сервере, используя ssh username@address, и запустите:

cd /jekyll/site/dir ; /root/gems/bin/bundle exec jekyll build --incremental

Он работает успешно. Однако, если я попытаюсь запустить это с моего локального компьютера:

ssh username@address "cd /jekyll/site/dir ; /root/gems/bin/bundle exec jekyll build --incremental"

, произойдет сбой. Я видел другие проблемы, такие как

, которые объясняют, что в неинтерактивном сеансе среда может быть не задана так же, как интерактивный сеанс по умолчанию.

Я попытался добавить источник в удаленную команду, чтобы учесть это:

ssh username@address "source /root/.profile ; source /root/.bashrc ; cd /jekyll/site/dir ; /root/gems/bin/bundle exec jekyll build --incremental"

Тем не менее, команда bundle работает неправильно. Фактическая ошибка, которую я получаю:

/root/gems/bin/bundle:15:in `<main>': undefined method `b' for "exec":String (NoMethodError)
    from /root/gems/bin/ruby_executable_hooks:24:in `eval'
    from /root/gems/bin/ruby_executable_hooks:24:in `<main>'

Таким образом, проблема, похоже, имеет отношение к bundle / RVM, и, возможно, есть кое-что из среды, которое я до сих пор пропускаю. Я попытался выполнить поиск в Интернете, чтобы определить причину этой ошибки, но мне не удалось точно определить проблему.

Если я cd попал в каталог сайта Jekyll в интерактивном сеансе, это означает, что

"RVM used your Gemfile for selecting Ruby, it is all fine - Heroku does that too,"

и так далее. Возможно, это как-то связано с тем, что RVM / Ruby / что-то переопределяет команду cd для запуска этого процесса, и, возможно, она не делает то же самое в неинтерактивном сеансе?

...