2

Rails が本番環境で使用するデータベース アダプターは PostgreSQL ですが、別のサーバーで MySQL データベースにクエリを実行する必要があります。Gemfile に 'mysql2' gem を含めましたが、バンドルのインストールは正常に実行されました。

私のアプリケーションコントローラーには がありますがclient = Mysql2::Client.new(...)、初期化されていない定数 ApplicationController::Mysql2 を取得します。

bundler が mysql2 gem をロードしないのはなぜですか? require 'mysql2'アプリケーションコントローラーを入れてみましたが、ファイルが見つかりません。

ルビー1.9.3p125とレール3.2.1を使用していることに注意してください

4

2 に答える 2

0

これは古い質問です。ただし、次のことが可能であると仮定します。

client = Mysql2::Client.new(...)

... Rails アプリ内から、正常に接続できます (最初にコンソールで試してください)。次に、mysql 接続を Rails アプリの /lib ディレクトリ内のクラスに配置し、次のようにします。

require 'yourlib'

..コントローラーの上部にあります。その後、コントローラーでクラスとメソッドを使用できます。

作成した lib ファイルと、lib ファイルを使用するために記述したコードは、Rails コンソールでもテストできます。

于 2012-08-09T15:37:28.523 に答える
0

establish_connectionセカンダリ データベースにあるデータを表すモデルを呼び出します。Railsはそれを理解する必要があります。

Data.establish_connection adapter: 'mysql'  # ...

渡す必要があるハッシュは、データベース構成ファイルのハッシュと似ています。例については、ドキュメントを確認してください。

于 2012-04-10T14:27:48.507 に答える