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