Heroku добавляет запись в sqlite

Я только что развернул свое приложение для героку, и, после некоторых проблем, он работает. Но затем я пытаюсь добавить запись в базу данных sqlite3 из приложения, она не работает и не перенаправляет меня на "/".

Это приложение для синатры, я установил все зависимости от данных, и журналы не репутат ошибки. вот код

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 '/'

конец

и ссылка здесь

1 ответ

Проблема в том, что Heroku не использует sqlite. Если вы укажете sqlite как свою базу данных по выбору, Heroku сделает черную магию, когда получит push, и заменит камень sqlite3 камнем postgres, а затем запустит ваше приложение с помощью базы данных postgres. Поэтому объясняется, почему ваш DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/rubrica.db") не работает.

Прочтите этот документ Heroku для получения дополнительной информации.

При дальнейшем ознакомлении с документами Heroku кажется, что вам нужно изменить свой вызов на Datamapper как таковой:

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

licensed under cc by-sa 3.0 with attribution.