Rails在生产中使用的数据库适配器是PostgreSQL,但我需要查询另一台服务器上的MySQL数据库。我在我的Gemfile中包含了'mysql2'gem,并且捆绑安装运行正常。
在我的应用程序控制器中,我有client = Mysql2::Client.new(...)
,但我得到了未初始化的常量ApplicationController :: Mysql2。
为什么捆绑器不加载mysql2 gem?我尝试将require 'mysql2'
放在应用程序控制器中,但是找不到文件。
注意我正在使用ruby 1.9.3p125和rails 3.2.1
答案 0 :(得分:0)
在代表辅助数据库中数据的模型上调用establish_connection
。 Rails应该弄明白。
Data.establish_connection adapter: 'mysql' # ...
必须传递的哈希类似于数据库配置文件中的哈希。查看文档以获取示例。
答案 1 :(得分:0)
这是一个老问题。但是,假设有可能只是:
client = Mysql2::Client.new(...)
...来自rails应用程序,并且可以成功建立连接(首先在控制台中尝试)。然后,我将把mysql连接放到你的Rails应用程序的/ lib目录中的一个类中,然后:
require 'yourlib'
..在控制器的顶部。然后,您可以在控制器中使用您的类和方法。
您创建的lib文件以及您编写的使用lib文件的代码也可以在rails控制台中进行测试。