Я использую Capistrano 3 для развертывания PHP-приложения в течение нескольких месяцев, и оно отлично работает. Недавно мы решили начать использовать Sass для таблиц стилей, и сейчас я пытаюсь внедрить эти изменения.
Я пытаюсь написать задачу, которая запускается после завершения остальной части развертывания, которая преобразует файл scss в css с использованием драгоценного камня Sass.
namespace :deploy do
after :finished, :assets do
on roles(:app), in: :sequence, wait: 5 do
within release_path do
# process sass files to css
execute "sass #{release_path}/styles/test.scss #{release_path}/styles/test.css"
end
end
end
end
Я использую RVM на сервере, и драгоценный камень sass установлен в определенном наборе драгоценных камней. В корне проекта также есть файл .rvmrc, который загружает правильный набор драгоценных камней, когда вы переходите в «текущий» каталог, созданный capistrano.
Когда я развертываю, он терпит неудачу в моей новой задаче, говоря, что не может найти sass.
stderr: bash: sass: command not found
Я могу войти на сервер как тот же пользователь, который используется для развертывания с помощью Capistrano, и перейти в «текущий» каталог и запустить ту же команду в задаче (заменив #{release_path} фактическим путем), и все работает нормально.
Что я пробовал:
- переписав команду выполнения следующим образом:
rvm use 2.1.5@deployer && sass #{путь_релиза}/styles/test.scss #{путь_релиза}/styles/test.css
написание скрипта bash, доступного пользователю развертывателя, который загружает набор драгоценных камней, а затем запускает команду sass (работает, когда я запускаю новый скрипт при входе в сервер в любом каталоге, не работает при вызове из задачи capistrano)
используя плагин capistrano-rvm (добавляя в Gemfile, требуя в Capfile) для установки набора драгоценных камней RVM - надеясь, что он загрузит набор драгоценных камней перед выполнением каких-либо команд.
Я много раз использовал Capistrano для развертывания приложений Rails и всегда использую подключаемый модуль активов, который выполняет предварительную компиляцию и еще много чего... Это первый проект, который я использовал для развертывания приложения PHP, и, возможно, первый раз, когда я пытался запустить приложение вручную. задача capistrano, которая использует rubygem, установленный на сервере с RVM.
Можно ли запустить задачу, которая зависит от определенного драгоценного камня/набора драгоценных камней... без использования плагинов рельсов по умолчанию?
Любая помощь приветствуется.
Спасибо, Джей Ди