如何为每个 Capistrano 角色使用不同的“default_env”

How to use a different `default_env` per Capistrano role

在我的 deploy.rb 中,我有:

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

我也有两台服务器:

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

对于在主机名 2 上 运行 的命令,我想使用不同的 default_env,这可能吗?

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

没有一种方法可以直接使用不同的 default_env,但您可以重写它的 key-value 对。

你应该这样试试:

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

你可以创建一个 rake 来根据环境设置不同的路径,然后 运行 使用默认环境作为参数的 rake
任务:设置,:角色=>:数据库做
运行"rake developer:setup default_evironment=#{rails_env}"
结束