Sinoku上的Sinatra设置配置文件

时间:2014-02-11 06:29:43

标签: heroku sinatra

过去几个小时我一直在努力解决这个问题,我希望有人可以帮助我。我正在创建我的第一个Sinatra应用程序,我想使用Mongo作为后端。我决定使用Heroku的MongoLab服务,它给了我一个连接URI,用于从我的Sinatra应用程序中连接Mongo。这似乎不是我想要在版本控制中保留的信息类型,但我很难弄清楚如何不将其硬编码到应用程序中。一方面,密钥永久存储为Heroku ENV var,但是当我在本地开发时,这无济于事。我已经尝试创建一个配置文件,如下所示:http://www.miqueloliete.com/configuring-environment-variables-in-sinatra/,但它只对本地有帮助。我似乎无法找到这样做的方法。

提前致谢, 瑞恩

3 个答案:

答案 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