如何根据Capistrano角色使用不同的`default_env`

时间:2016-12-05 19:47:58

标签: capistrano

在我的deploy.rb中,我有:

set :default_env, -> { {
  PATH: "some/path/to/stuff"
} }

我也有两台服务器:

server 'hostname1', roles: %{web app}, primary: true
server 'hostname2', roles: %{db}, no_release: true

对于在hostname2上运行的命令,我想使用其他default_env,这可能吗?

task :my_task do
  on roles :db do
    # do work
  end 
end

2 个答案:

答案 0 :(得分:2)

没有一种直接使用不同的default_env的方法,但是您可以重写其键值对。

您应该尝试这种方式:

task :my_task do
  on roles :db do
    with PATH: "/var/www/subdirectory" do
      # do work
    end 
  end
end

答案 1 :(得分:0)

您可以创建一个rake以根据环境设置不同的路径,然后使用默认环境作为参数运行rake
任务:setup,:roles =>:db do
运行“ rake developer:setup default_evironment =#{rails_env}”
结束