Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Heroku 希罗库上的Sinatra设置配置文件_Heroku_Sinatra - Fatal编程技术网

Heroku 希罗库上的Sinatra设置配置文件

Heroku 希罗库上的Sinatra设置配置文件,heroku,sinatra,Heroku,Sinatra,在过去的几个小时里,我一直在为这个问题苦苦挣扎,我希望有人能帮助我。我正在创建我的第一个Sinatra应用程序,我想使用Mongo作为后端。我决定使用Heroku的MongoLab服务,它给了我一个连接URI,用于从我的Sinatra应用程序中连接Mongo。这似乎不是我想要保存在版本控制中的信息类型,但我很难弄清楚如何不将其硬编码到应用程序中。一方面,密钥作为Heroku ENV var永久存储,但在本地开发时,这并没有帮助。我尝试创建一个配置文件,如下所述:,但它只在本地有帮助。我似乎找不到

在过去的几个小时里,我一直在为这个问题苦苦挣扎,我希望有人能帮助我。我正在创建我的第一个Sinatra应用程序,我想使用Mongo作为后端。我决定使用Heroku的MongoLab服务,它给了我一个连接URI,用于从我的Sinatra应用程序中连接Mongo。这似乎不是我想要保存在版本控制中的信息类型,但我很难弄清楚如何不将其硬编码到应用程序中。一方面,密钥作为Heroku ENV var永久存储,但在本地开发时,这并没有帮助。我尝试创建一个配置文件,如下所述:,但它只在本地有帮助。我似乎找不到这样做的方法

提前感谢,,
Ryan

实现这些目标有很多方法,所以我可以给你一些想法

Env

您可以使用
export name=mongourl

配置

Sinatra提供了一种使用不同配置部分的方法。这是我通常做的事。例如:

configuration :development do setup things to use your local db end 配置:开发吗 设置使用本地数据库的内容 结束 配置:生产 生产数据库的设置 结束 配置文件


将这些信息存储在yaml文件中

我找到了最好的方法。我没有意识到在Ruby ENV中,['somevar']访问了shell的环境变量,因此为了不将我的密钥和密码提交给版本控制,我只需确保我在Heroku中拥有的所有环境变量(Heroku配置的结果)也是shell中的变量

您可以使用,然后在本地创建一个.env文件,该文件具有与Heroku env变量相同的键。这样,您就可以在代码中为两个环境保留相同的环境键,并根据需要选择具有相同或不同的值

#app.rb
require 'sinatra/base'
...

if Sinatra::Base.environment == :development
    require 'dotenv'
    Dotenv.load
end

#.env
DATABASE_URL=mongo_sinatra_connection_info
#app.rb
require 'sinatra/base'
...

if Sinatra::Base.environment == :development
    require 'dotenv'
    Dotenv.load
end

#.env
DATABASE_URL=mongo_sinatra_connection_info