場景:
我在本地開發中使用Sinatra + Sinatra/Active Record + SQLite3。我知道,當我推到Heroku時,它使用Postgresql。這是好的,因爲我使用活動記錄,我應該沒有問題。Sinatra/ActiveRecord + Heroku生成錯誤
APP.RB文件
require 'rubygems'
require 'sinatra'
require 'sinatra/activerecord'
require 'open-uri'
require 'uri'
require 'nokogiri'
configure :development do
set :database, 'sqlite://development.db'
end
configure :test do
set :database, 'sqlite://test.db'
end
configure :production do
db = URI.parse(ENV['DATABASE_URL'] || 'postgres://localhost/mydb')
ActiveRecord::Base.establish_connection(
:adapter => db.scheme == 'postgres' ? 'postgresql' : db.scheme,
:host => db.host,
:username => db.user,
:password => db.password,
:database => db.path[1..-1],
:encoding => 'utf8'
)
end
class Picture < ActiveRecord::Base
end
get '/' do
@test = Picture.find(:all)
erb :index
end
錯誤
當我嘗試heroku rake db:migrate
我得到以下錯誤...
DEBUG -- : NoMethodError: undefined method `values' for #<PGresult:0x00000002b24d08>: SHOW client_min_messages
DEBUG -- : PGError: ERROR: invalid value for parameter "client_min_messages": ""
後來我想確定沒有後顧之憂我會試試這個heroku功能,將我的本地sqlite3 development.db
中的數據推送到我的heroku製作數據庫中。所以,我沒有heroku push:db sqlite://development.db
和成功的數據是。
我然後重新啓動應用程序,並進一步推提交,但我不能訪問任何與ActiveRecord的。如果我對Picture.find(:all)
進行基本查詢,則會得到相同的DEBUG
錯誤。我的configure :production
搞砸我了嗎? 有什麼建議嗎?
「我正在使用活動記錄,我應該沒有問題。」你顯然沒有閱讀關於SO的heroku問題。對PostgreSQL進行安裝和開發會更好。 – 2012-01-05 02:37:52
是啊,開始聽起來像我將不得不這樣做。希望不要學習另一種SQL語言。 – alenm 2012-01-05 03:24:23
SQL是SQL。但SQLite不是SQL。 (並且MySQL也不是。)還沒有。 – 2012-01-05 04:26:59