Heroku добавить запись в sqlite - PullRequest
0 голосов
/ 22 ноября 2011

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

Это приложение 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 '/'

конец

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

1 Ответ

1 голос
/ 22 ноября 2011

Проблема в том, что Heroku не использует sqlite. Если в качестве базы данных вы выберете sqlite, Heroku при возникновении пуша примет черную магию, заменит гем 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')
...