Heroku添加记录到sqlite

问题描述:

我刚刚将我的应用程序部署到heroku,并在出现一些问题后,它似乎工作。 但是,然后我尝试从应用程序添加一个记录到sqlite3数据库,它不工作,并没有重定向到'/'。Heroku添加记录到sqlite

这是一个sinatra应用程序,我已经安装了所有的数据映射器依赖项,并且日志不会重新发布错误。 这里是代码

require 'rubygems' 
require 'sinatra' 
require 'dm-core' 
require 'dm-timestamps' 
require 'dm-validations' 
require 'dm-migrations' 
DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/rubrica.db") 

class Contatto 
    include DataMapper::Resource 
    property :id, Serial 
    property :fname, Text 
    property :lname, Text 
    property :phone, Text 
    property :mail, Text 
end 

DataMapper.finalize.auto_upgrade! 

get '/' do 
    @title = 'Tutti' 
    @Contatti = Contatto.all 
    erb :home 
end 

get '/add' do 
    @title = 'Aggiungi' 
    erb :aggiungi 
end 

post '/' do 
    c = Contatto.new 
    c.fname = params[:fname] 
c.lname = params[:lname] 
c.phone = params[:phone] 
c.mail = params[:mail] 
c.save 
redirect '/' 

和链接 here

的问题是,Heroku的不使用SQLite。如果您指定sqlite作为您选择的数据库,则Heroku在接收推送时将执行一些黑魔法,并将sqlite3 gem替换为postgres gem,然后使用postgres数据库运行您的应用程序。所以这就解释了为什么你的DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/rubrica.db")呼叫不起作用。

Read this Heroku doc for more information.

在Heroku的文档的一些进一步阅读,看来你需要改变你对DataMapper的电话是这样:

DataMapper.setup(:default, ENV['DATABASE_URL'] || 'sqlite3://#{Dir.pwd}/rubrica.db') 
+0

所以,我应该切换到Postgres的?以及为什么它可以获得现有记录? –

+0

查看我的更新回复。 – Batkins

+0

谢谢!!!!有用! –