Синатра / ActiveRecord + Heroku генерирует ошибки - PullRequest
0 голосов
/ 05 января 2012

СЦЕНАРИЙ:
Я использую 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 портит меня? Любые рекомендации?

1 Ответ

1 голос
/ 05 января 2012

Вам каким-то образом удается установить для параметра конфигурации client_min_messages пустую строку.

Руководство информирует здесь :

Допустимые значения: DEBUG5,DEBUG4, DEBUG3, DEBUG2, DEBUG1, LOG, NOTICE, WARNING, ERROR, FATAL и PANIC

Вы можете установить этот параметр в postgresql.conf или в любое время сеанса с помощью:

SET client_min_messages = WARNING;

Чтобы сбросить его до значения по умолчанию, определенного в postgresql.conf:

RESET client_min_messages;
...