我创建了一个运行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?我看过教程,他们已经走到了这一步。有人曾经这样做过吗?
答案 0 :(得分:1)
@DB = Sequel.connect(ENV['DATABASE_URL'])
应该可以正常工作,但通常你会将数据库分配给常量,而不是实例变量。