1

Railsに接続するときに、tnsnames.oraのデータベース接続情報を使用するにはどうすればよいですか?

database:database.ymlのまたはhost:フィールドをSIDに設定しようとしましたが、どちらも機能しませんでした。

sqlplusがデータベースに接続できることを確認したので、tnsnames.oraは正しいです。

それが役に立ったら、私はRails3でDataMapperを使用しています。

4

2 に答える 2

1

数日前に#datamapperで話したと思います。Sqlplusは、負荷分散システムであると私が推測するものとインターフェイスするOracleソフトウェアの一部です。

DataMapperは、リポジトリとデータストアの間に1対1のマッピングがあることを前提としています。通常、これは、負荷分散がデータストア側(mysqlやpostgresクラスタリングなど)で処理されることを前提としていることを意味します。

ただし、各リポジトリに関連付けられた各データストアの負荷を読み取ることができた場合(つまり、独自の小さな負荷を書き込むことができた場合)、誰かがリポジトリのグループ間でDataMapperをホットスワップできるライブラリを作成することを妨げるものは何もありません。バランシングルーター)。

私が働いている会社は、まさにこの方法でDataMapperリポジトリを使用しています(負荷分散ではなく、レコードの分離性のために)。

それは次のように簡単です:

DataMapper.repository(seed_repository_symbol) { return your_code_block.call }
于 2011-01-23T19:32:04.640 に答える
0

これを自分で数時間騒ぎ立てた後、私は答えが次のようになることを発見しました。

# WORKS
development:
  adapter: oracle
  host: devdb
  username: user
  password: pwd

32ビットと64ビットの両方の通常のOracleクライアントがインストールされているWin7でRails3.2.1、DM1.2.0を使用しています。

途中で私が発見した非常に重要なことの1つは、database.ymlの各mod間でrails devサーバーを再起動して、変更を取得する必要があることです。 私はこれを知らずに多くの時間を無駄にしました。何らかの理由で、DataMapperのセットアップは、開発サーバーでは通常のように、ここで変更を取得していませんでした。

歴史:

答えはこれだと言われました(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で同じことを試しました。機能した。

于 2013-03-14T21:03:35.820 に答える