【问题标题】:ActiveRecord establish_connection using Heroku config vars [duplicate]使用 Heroku 配置变量的 ActiveRecord 建立连接 [重复]
【发布时间】:2015-07-03 19:01:47
【问题描述】:

我正在尝试使用ActiveRecord 中的establish_connection 连接到我的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)

【问题讨论】:

    标签: ruby-on-rails activerecord heroku


    【解决方案1】:

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

    就好像在做下面这样的事情

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

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

    【讨论】:

    • 我正在尝试使用 heroku 配置变量建立到数据库的连接。知道如何修改/组合上述类来完成此任务吗?
    • 如果您使用的是 Rails,请按照 Heroku 说明进行操作 devcenter.heroku.com/articles/getting-started-with-rails4 无需手动触发连接
    • 您标记为重复的问题没有答案。这是用于第二个数据库而不是应用程序数据库。
    猜你喜欢
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 2013-11-10
    • 2015-10-08
    • 2011-03-04
    • 2020-10-28
    相关资源
    最近更新 更多