capistrano 设置并从配置中获取环境变量到 rake

capistrano set and get environment variables from config to rake

我正在尝试在 /config/deploy/staging.rb 中定义一个环境变量,例如:

set :default_env, { 
  'environment' => 'preprodv1'
}

然后我试图在我的文件 /lib/capistrano/tasks/build.rake 中访问这个变量:

desc "Builds the admin front-end"
    task :build_admin_front do
        on roles (:all) do |host|
            within "#{release_path}" do
                execute "cd #{release_path}/front_admin && npm install && npm run-script build --env=#{fetch(:environment)}"
            end
        end
    end
end

但我得到了这个错误:未定义的局部变量或方法“环境”

请问您知道原因吗? 我不能从我的 rake 文件访问我在 rb 文件中设置的环境变量吗?

非常感谢您的帮助!

是否因为您将变量设置为 :default_env,但您要求它是 :environment

感谢您的回答,我终于通过使用 set :environment, "preprodv1" 而不是 set :default_env{ 'environment' => 'preprodv1' } 并保留 #{fetch(:environment)} 解决了这个问题,非常感谢你的帮助:)

fetch(:default_env)['environment']