【问题标题】:How to manage mysql2 connections in rails, without using activerecord如何在 Rails 中管理 mysql2 连接,而不使用 activerecord
【发布时间】:2012-10-30 14:13:49
【问题描述】:

我经常需要访问一个 mysql 数据库,我的主要数据存储是 mongo,我使用 mongoid 访问它。我想知道在不使用活动记录的情况下管理与 mysql 的连接(使用 mysql2 gem - 0.2.7)的最佳方法。

我目前正在做以下事情......

# In config/initializers/mysql.rb
class MySqlConnection

  def self.client
    @client ||= Mysql2::Client.new(host: ENV['mysql_host'], 
                                   username: ENV['mysql_username'],
                                   password: ENV['mysql_password'], 
                                   database: ENV['mysql_database'])
  end

end

然后我使用连接,就像这样......

rows_q = "SELECT * FROM amaizng_table WHERE great_column = '#{cool_value}' "
rows = ::MySqlConnection.client.query(rows_q)

一切正常——但我有一种潜意识的怀疑,我做错了什么可怕的事情,事情会在路上爆炸。

另请注意,该应用程序托管在 heroku 上

有人知道解决这个问题的最佳方法吗?

谢谢!

乔纳森

【问题讨论】:

    标签: mysql ruby-on-rails heroku mysql2


    【解决方案1】:

    为什么,为什么要摆脱 ActiveRecord 的强大功能(或任何其他 ORM,真的)?

    class Amazing < ActiveRecord::Base
      establish_connection :mysql_database
    end
    

    简单到让人心疼。详情请见this

    【讨论】:

    • 对我来说,这两个查询似乎有点矫枉过正——但也许它是最好的解决方案
    • 您的所有查询都将包含在事务中。您可以将您的凭据放在 database.yml 中,并使您的盒子上的未经授权的用户无法读取该文件,这样更安全。如果您以后需要扩展您的模型,那么您就可以开始了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多