如何在Heroku中为Sinatra应用程序设置数据库?

时间:2014-03-15 04:57:11

标签: ruby git postgresql heroku sqlite

我创建了一个运行SQLite3数据库的Sinatra应用程序。一切都在我的本地机器上顺利运行。

当我将它部署到Heroku时,我不得不更改一些内容,即Gemfile和Procfile,同时还将我的数据库代码更改为:

#Within a class

#Before
@DB = Sequel.connect('sqlite://database.db')

#After
@DB = Sequel.connect(ENV['DATABASE_URL'] || 'postgres://localhost/db')

我将数据库更改为Postgres而不是SQLite3,因为Heroku不支持SQLite3。 (这可能是我的问题源于此。)

这是我的Gemfile:

source "https://rubygems.org"
ruby "1.9.3"

gem "sinatra"
gem "sequel"
gem "pg"
gem "postgres"
gem "json"

我的Procfile:

web: bundle exec ruby main.rb -p $PORT

我创建了一个git存储库,然后运行heroku create。我添加了所有文件,提交并使用git推送它们,我得到了我的Heroku URL,一切都很好。我运行heroku config检查我的网址并得到了这个结果:

DATABASE_URL:postgres://uhyodailuzazve:hUSIuD_4MOYWmoiSGNZCPrQNyg@ec2-54-204-40-     140.compute-1.amazonaws.com:5432/d1qkn1ivl7p013HEROKU_POSTGRESQL_BLACK_URL:postgres://uhyodailuzazve:hUSIuD_4MOYWmoiSGNZCPrQNyg@ec2-54-204-40-140.compute-1.amazonaws.com:5432/d1qkn1ivl7p013

(他们是一样的)。我的堆栈也是“雪松”

=== enigmatic-taiga-5020 Available Stacks
bamboo-mri-1.9.2
bamboo-ree-1.8.7
* cedar

如何配置Sinatra数据库,从续集到Postgres?我看过教程,他们已经走到了这一步。有人曾经这样做过吗?

1 个答案:

答案 0 :(得分:1)

@DB = Sequel.connect(ENV['DATABASE_URL'])应该可以正常工作,但通常你会将数据库分配给常量,而不是实例变量。

相关问题