【发布时间】:2015-08-22 15:54:43
【问题描述】:
我正在从事的项目中有一个非常奇怪的要求。
我的文件存储在某个位置/etc/config/config.json,其中包含数据库信息,如Host、Port、Username 或Password或大致如下所示:
{
"mysql-db": {
"host": "172.17.0.27",
"port": 3306,
"password": "root",
"username": "root"
}
}
我正在基于Sinatra 构建我的小型网络应用程序,并使用sinatra-activerecord 来处理MySql 数据库。
我的database.yml 文件如下所示:
development:
adapter: mysql2
database: toopaste
host: <%= ENV["MYSQL_DB_HOST"] %>
port: <%= ENV["MYSQL_DB_PORT"] %>
username: <%= ENV["MYSQL_DB_USERNAME"] %>
password: <%= ENV["MYSQL_DB_PASSWORD"] %>
我在尝试什么?
我创建了一个像setup.rb 这样的可执行文件:
#! /usr/bin/env ruby
require 'json'
FILE_PATH = "/etc/atlantis/config/konfig.json"
data = JSON.parse(File.read(FILE_PATH))
system("export MYSQL_DB_HOST=#{data['mysql-db']['host']}")
system("export MYSQL_DB_PORT=#{data['mysql-db']['port']}")
system("export MYSQL_DB_USERNAME=#{data['mysql-db']['username']}")
system("export MYSQL_DB_PASSWORD=#{data['mysql-db']['password']}")
这不会设置环境变量MYSQL_DB_HOST 或config/database.yml 文件使用的其他变量。
知道如何完成这项工作吗?
我能想到的一种方法是“在读取 config.json 参数后动态生成整个 database.yml 文件。
但想知道是否有更好的解决方案。
【问题讨论】:
标签: mysql ruby orm sinatra sinatra-activerecord