СЦЕНАРИЙ:
Я использую Sinatra + Sinatra / Active Record + SQLite3 для локальной разработки. Я знаю, что когда я нажимаю на Heroku, он использует Postgresql. Это нормально, потому что я использую активную запись, и у меня не должно быть проблем.
APP.RB File
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 production. Итак, я добился heroku push:db sqlite://development.db
и успеха с данными.
Затем я перезапустил приложение и отправил дальнейшие коммиты, но не могу получить доступ к чему-либо, что связано с ActiveRecord. Если я сделаю простой запрос Picture.find(:all)
, я получу ту же ошибку DEBUG
.
Мой configure :production
портит меня?
Любые рекомендации?