过去几个小时我一直在努力解决这个问题,我希望有人可以帮助我。我正在创建我的第一个Sinatra应用程序,我想使用Mongo作为后端。我决定使用Heroku的MongoLab服务,它给了我一个连接URI,用于从我的Sinatra应用程序中连接Mongo。这似乎不是我想要在版本控制中保留的信息类型,但我很难弄清楚如何不将其硬编码到应用程序中。一方面,密钥永久存储为Heroku ENV var,但是当我在本地开发时,这无济于事。我已经尝试创建一个配置文件,如下所示:http://www.miqueloliete.com/configuring-environment-variables-in-sinatra/,但它只对本地有帮助。我似乎无法找到这样做的方法。
提前致谢, 瑞恩
答案 0 :(得分:0)
有很多方法可以实现这些,所以我可以给你一些想法。
<强>的Env 强>
您可以使用export name=mongourl
<强>构造强>
Sinatra提供了一种使用不同配置部分的方法。这就是我做的正常做法。像这样:
configuration :development do setup things to use your local db end
configuration :production do setup things for production db end
配置文件
将这些信息存储在yaml文件中。
答案 1 :(得分:0)
我想出了为我做这件事的最好方法。我没有意识到在Ruby ENV ['somevar']中为你的shell访问了你的环境变量,所以为了不将我的密钥和密码提交给版本控制,我只是确保我所拥有的所有环境变量我的Heroku(heroku配置的结果)也是我的shell中的变量。
答案 2 :(得分:0)
您可以使用dotenv gem,然后在本地创建一个与您的Heroku ENV变量具有相同键的.env文件。这样,您可以在两个环境的代码中保留相同的环境键,并根据需要选择具有相同或不同的值。
#app.rb
require 'sinatra/base'
...
if Sinatra::Base.environment == :development
require 'dotenv'
Dotenv.load
end
#.env
DATABASE_URL=mongo_sinatra_connection_info