使用Heroku配置变量的ActiveRecord establish_connection

时间:2015-07-03 19:01:48

标签: ruby-on-rails activerecord heroku

我正在尝试使用establish_connection中的ActiveRecord连接到我的Rails 4应用中的外部数据库。我想使用Heroku配置变量来执行此操作,这样我就不必将database.yml输入到源代码管理中。

我的模型设置如下:

class Pgconn < ActiveRecord::Base.establish_connection(
    #heroku config vars
    :adapter => ENV['PG_ADAPTER'],
    :database => ENV['PG_DB'],
    :username => ENV['PG_USER'],
    :password => ENV['PG_PW'],
    :host => ENV['PG_HOST']
  )
end

class Pgdb < Pgconn

  self.abstract_class = true
  self.table_name = 'test'

  def self.getInfo(name)
    get = connection.query("SELECT * FROM test)
    get
  end
end

这会在heroku logs中出现以下错误: syntax error, unexpected end-of-input, expecting keyword_end

当我在配置变量中添加{}时,出现错误: superclass must be a Class (ActiveRecord::ConnectionAdapters::ConnectionPool given) (TypeError)

1 个答案:

答案 0 :(得分:0)

您正在尝试定义扩展Pgconn结果的类ActiveRecord::Base.establish_connection。这不是有效的Ruby。

这就像做以下事情

class Foo
  def self.bar
  end
end

class Something < Foo.bar(
    # ...
  )
end

这是不正确的。我不知道你想做什么,但这绝对不正确。