database.ymlでtnsnames.oraを使用します
-
13-10-2019 - |
質問
レールに接続するときに、tnsnames.oraでデータベース接続情報を使用するにはどうすればよいですか?
設定しようとしました database:
または host:
sidへのdatabase.ymlのフィールドですが、どちらも機能しませんでした。
SQLPlusがデータベースに接続できるため、tnsnames.oraが正しいことを確認しました。
それがまったく役立つ場合、Rails 3でデータマッパーを使用しています。
解決
数日前に#datamapperで話したと思います。 SQLPLUSは、私が彼らのロードバランシングシステムであると思うものとインターフェイスするOracleソフトウェアの一部です。
データマッパーは、リポジトリとデータストアの間に1〜1のマッピングがあると想定しています。通常、これは、負荷分散がデータストア側(MySQLまたはPostgresクラスタリングなど)が処理されると仮定することを意味します。
ただし、各リポジトリに関連付けられた各データストアの負荷の読み取り値を取得できる場合、誰かがリポジトリのグループ間でデータをホットスワップできるようにするライブラリを作成することを妨げるものは何もありません(つまり、独自の小さな負荷を書きますバランスルーター)。
私が働いている会社は、この方法でデータを使用しています(ロードバランスではなく、レコードの分離性のため)。
それは次のように簡単です
DataMapper.repository(seed_repository_symbol) { return your_code_block.call }
他のヒント
自分でこれと数時間大騒ぎした後、私は答えを発見しました:
# WORKS
development:
adapter: oracle
host: devdb
username: user
password: pwd
Win7でRails 3.2.1、DM 1.2.0を使用しており、32ビットと64ビットの通常のOracleクライアントの両方がインストールされています。
途中で私が発見した非常に重要なことの1つ: Database.ymlの各modの間にRails Devサーバーを再起動して、変更をピックアップする必要があります。 私はこれを知らずに多くの時間を無駄にしました。何らかの理由で、DataMapperのセットアップは、DEVサーバーの場合と同じようにここで変更を取り上げていませんでした。
歴史:
答えはこれだと言われました(WindowsでJrubyを使用している別の会社の別の開発者による):
# DID NOT WORK
development:
adapter: oracle
database: user/pwd@devdb
それは私にとってはうまくいきませんでした、そして、私は答えがコロンを使用することであると疑っていました(に基づいて DataMapper.setup
構文):
# DID NOT WORK
development:
adapter: oracle
database: user:pwd@devdb
これも機能しなかったので、IRMで手動接続をテストし、からの応答を研究しました DataMapper.setup
. 。 SIDを入れます host
示されていません database
そこで、Database.ymlで同じことを試みました。機能した。