0

既存の Cucumber および Ruby スイートを使用して概念実証テストを作成しています。私がこれを行っている企業には、とりわけ Java と DB2 を含むスタックがあります。

現在、データベースを使用するテストはテスト データベースを劣化させます。多くの理由から、データベースを消去してイメージ化されたバージョンに置き換えることはできません。

トランザクション戦略を使用してデータベースをクリーンアップするというアイデアに興味があり、database_cleaner gem を検討しています。

database_cleaner を操作するには ORM が必要なようです。この時点ではスキーマにアクセスできず、ActiveRecord は私の資格情報で必要なものにアクセスできません。

2 つの質問:

  1. ORM は常にスキーマにアクセスする必要がありますか?
  2. トランザクション戦略を使用してデータベースをクリーンアップするには、常に ORM が必要ですか?

また、Ruby 1.8.7 (jRuby はまだありません)、Windows、DB2 などで動作する gem を誰かが知っている場合のボーナスです。

4

1 に答える 1

1
  1. ORM は常にスキーマにアクセスする必要がありますか?

スキーマ?データベースのテーブルとリレーショナル フィールドとインデックスのテキスト ダンプのように? いいえ。テーブルとそれらの関係を記述するデータベースのハウスキーピング データを読み取ることができる必要がありますか? はい。それが彼らがモデルを構築する方法です。

  1. トランザクション戦略を使用してデータベースをクリーンアップするには、常に ORM が必要ですか?

嫌です。トランザクションをサポートしていると仮定すると、その特定の DBM の SQL にすべての昔ながらの方法で記述できます。ORM は、適切な SQL を生成する方法を知るために ORM に依存しているため、より移植性が高く、通常は記述がはるかに簡単になります。

私は ORM にSequelを気に入っています。なぜなら、生の SQL を使用できるからです。さらに、非常に優れた SQL が生成されるので、簡単に確認できます。強くお勧めします。

Active Recordは Rails に付属しており、おそらく Ruby で最も使用されている ORM です。それが最高というわけではなく、意見の問題ですが、一般的です。Active Record は Rails での使用に分離されていません。通常の Ruby アプリでも使用できますが、それは流れに逆らうようなものです。以前、Rails レイヤーを使用せずに、Ruby をレガシー データベースに結び付けるために使用しましたが、問題なく動作しました。

しばらくDataMapperを使っていませんでしたが、使っていてよかったので、見てみることをお勧めします。誰もがデータを異なる方法で同化します。私たちはさまざまな API を好みます。したがって、ORM もさまざまです。そのため、他の人が進んで行かない脳にデータが流れ込む可能性があります。

于 2013-09-26T17:45:08.930 に答える