Heroku fügt Datensatz zu sqlite hinzu

  • Ich habe meine App gerade für heroku bereitgestellt und scheint nach einigen Problemen zu funktionieren. Aber dann versuche ich, einen Datensatz zu einer sqlite3-Datenbank aus der App hinzuzufügen, es funktioniert nicht , und leitet mich nicht nach "/" um .

    Es ist eine Sinatra-App. Ich habe alle Abhängigkeiten des Data Mapper installiert und die Protokolle stellen keine Fehler wieder her. Hier ist der Code

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

    Ende

    und der Link hier

    22 November 2011
    Francesco Zaffaroni
1 answer
  • Das Problem ist, dass Heroku kein SQLite verwendet. Wenn Sie sqlite als bevorzugte Datenbank angeben, wird Heroku beim Übertragen etwas Schwarzes tun und den sqlite3-Edelstein durch den postgres-Edelstein ersetzen. Anschließend wird Ihre Anwendung mit einer Postgres-Datenbank ausgeführt. Das erklärt also, warum Ihr DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/rubrica.db") -Aufruf nicht funktioniert.

    Lesen Sie dieses Heroku-Dokument, um weitere Informationen zu erhalten.

    Nach einiger Lektüre der Heroku-Dokumente scheint es, als müssten Sie Ihren Aufruf an Datamapper ändern wie:

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