我的Sinatra应用程序中有以下行:
Mongoid.load!('./config/database/mongoid.yml')
这很好,但我不想在YAML文件中保留我的连接详细信息,并将其添加到.gitignore
。我希望将它们保留在ENV
中。
过去我通过向YAML配置文件添加username: <%= ENV['MONGODB_USER'] %>
之类的内容,然后将其作为ERB读取,保存并在Heroku擦除磁盘之前使用Mongoid.load!
再次读取它来绕过这个。毋庸置疑,这非常疯狂。
我所能找到的只是.load!
over here的定义,并且看起来并没有任何解决方法。
是否有一些以编程方式配置Mongoid
连接的隐藏方式?
提前致谢。
答案 0 :(得分:3)
您可以为Mongoid提供一个哈希值,用于初始化,如下所示:
<?php
header('Content-Type: application/json');
include 'config.php';
$query = mysql_query("SELECT str_data ,occasione FROM Evento");
$arraydata = array();
$arraynome = array();
while($row = mysql_fetch_assoc($query)){
$arraydata[] = date("m-d-Y", $row['str_data']);
$arraynome[] = $row['occasione'];
}
$datanome = array_combine($arraydata, $arraynome);
echo json_encode($datanome);
?>
请注意,传递给data.php:1 Uncaught SyntaxError: Unexpected token :
的哈希值不会像您在Mongoid.load_configuration(clients: {
default: {
database: database,
hosts: [ host ]
}
})
中通常所拥有的环境密钥一样开始。
答案 1 :(得分:2)
Mongoid.load!
并没有做太多事情:
def load!(path, environment = nil)
settings = Environment.load_yaml(path, environment)
if settings.present?
Sessions.disconnect
Sessions.clear
load_configuration(settings)
end
settings
end
所有这一切都是一些簿记,加载YAML,然后交给load_configuration
进行繁重的工作。没有什么可以阻止你手动构建settings
哈希并自己调用Mongoid.load_configuration
。