Ruby Capistrano 3中的任务找不到RVM
几个月来,我一直在使用Capistrano3部署PHP应用程序,效果非常好。最近,我们决定开始在样式表中使用Sass,我现在正尝试部署这些更改 我正在尝试编写一个任务,该任务在部署的其余部分完成后运行,使用Sass gem将scss文件转换为cssRuby Capistrano 3中的任务找不到RVM,ruby,capistrano,capistrano3,rvm-capistrano,Ruby,Capistrano,Capistrano3,Rvm Capistrano,几个月来,我一直在使用Capistrano3部署PHP应用程序,效果非常好。最近,我们决定开始在样式表中使用Sass,我现在正尝试部署这些更改 我正在尝试编写一个任务,该任务在部署的其余部分完成后运行,使用Sass gem将scss文件转换为css namespace :deploy do after :finished, :assets do on roles(:app), in: :sequence, wait: 5 do within release_path d
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 gem安装在特定的GEMS集中。项目根目录中还有一个.rvmrc文件,当您将cd刻录到capistrano创建的“当前”目录中时,该文件将加载正确的gemset
当我部署时,它在我的新任务中失败,说它找不到sass
stderr: bash: sass: command not found
我可以作为使用Capistrano和cd部署到“current”目录的同一用户登录到服务器,并在任务中运行相同的命令(用实际路径替换#{release_path}),并且工作正常
我尝试过的事情:
JD通过使用capistrano/bundler命令解决了这个问题,只是想看看capistrano在默认情况下是如何运行bundle的。。。复制了部署过程中记录的bundler命令,然后对其进行了修改,使其适用于我尝试执行的操作,最后删除了bundler插件,因为我实际上不需要部署来捆绑任何东西 在不使用任何capistrano插件的情况下,您可以在capistrano task execute命令前面加上gemset的位置,如下所示:
after :finished, :assets do
on roles(:app), in: :sequence, wait: 5 do
within release_path do
execute "~/.rvm/bin/rvm ruby-2.1.5@deployer do sass #{release_path}/styles/sass/screen.scss #{release_path}/styles/screen.css"
end
end
end
关键区别在于以下代码段是我最初尝试的实际命令的开头:
~/.rvm/bin/rvm ruby-2.1.5@deployer do ....
显然,您可以使用任何需要指定gemset的命令(而不是我正在使用的sass命令)。通过需要capistrano/bundler命令来解决这个问题,只是为了看看capistrano在默认情况下是如何运行bundle的。。。复制了部署过程中记录的bundler命令,然后对其进行了修改,使其适用于我尝试执行的操作,最后删除了bundler插件,因为我实际上不需要部署来捆绑任何东西 在不使用任何capistrano插件的情况下,您可以在capistrano task execute命令前面加上gemset的位置,如下所示:
after :finished, :assets do
on roles(:app), in: :sequence, wait: 5 do
within release_path do
execute "~/.rvm/bin/rvm ruby-2.1.5@deployer do sass #{release_path}/styles/sass/screen.scss #{release_path}/styles/screen.css"
end
end
end
关键区别在于以下代码段是我最初尝试的实际命令的开头:
~/.rvm/bin/rvm ruby-2.1.5@deployer do ....
显然,您可以使用任何需要指定gemset的命令(而不是我正在使用的sass命令)