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')
所以,我应该切换到Postgres的?以及为什么它可以获得现有记录? –
查看我的更新回复。 – Batkins
谢谢!!!!有用! –