加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – Capistrano在部署服务器上从.env读取

发布时间:2020-12-17 02:40:45 所属栏目:百科 来源:网络整理
导读:我正在尝试执行数据库备份作为Capistrano(v3)部署脚本(对于NON-Rails应用程序)的一部分. 该脚本工作正常 – 如果我硬编码数据库配置. 现在我想从.env文件加载数据库配置.在我的本地计算机上,我的.env文件(在Capfile旁边的repo根目录中)如下所示: DB_NAME='l
我正在尝试执行数据库备份作为Capistrano(v3)部署脚本(对于NON-Rails应用程序)的一部分.

该脚本工作正常 – 如果我硬编码数据库配置.

现在我想从.env文件加载数据库配置.在我的本地计算机上,我的.env文件(在Capfile旁边的repo根目录中)如下所示:

DB_NAME='local_name'
DB_USER='local_user'
DB_PASSWORD='local_pw'
DB_HOST='127.0.0.1'

在服务器上,.env文件(Capistrano已放置在共享文件夹中并从当前文件夹中删除)如下所示:

DB_NAME='dev_name'
DB_USER='dev_user'
DB_PASSWORD='dev_pw'
DB_HOST='127.0.0.1'

但是,在运行cap deploy时,我得到以下内容:

INFO [292e2535] Running /usr/bin/env mysqldump -u local_user --password='local_pw' --databases local_name -h 127.0.0.1 | bzip2 -9 > /var/www/vhosts/xxxxx/backups/database_local_name_2014-05-29_22:52:07.sql.bz2 on <server>

即它正在使用我的本地.env文件,实际上我希望它加载服务器上存在的.env文件.如果可能的话,我不希望我的所有团队都必须管理单独的.env.production文件!

我脚本的相关部分如下(使用Dotenv gem):

require 'dotenv'
Dotenv.load '.env'
username,password,database,host = ENV['DB_USER'],ENV['DB_PASSWORD'],ENV['DB_NAME'],ENV['DB_HOST']

任何帮助将不胜感激!

解决方法

您可以使用Dotenv :: Parser.call(字符串).我正在使用Capistrano 2.14(这是旧版本!)

desc <<-desc
  ENV test
desc
task :test do
  text = capture "cat #{shared_path}/.env"
  ENV2 = Dotenv::Parser.call(text)
  puts ENV2['DB_NAME']
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读