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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |