1

私はruby1.8.7とWATiRを使用してWebアプリケーションをテストしていますが、H2データベースにできるだけ簡単に接続したいのですが、JDBCアクセスに関する情報しか見つかりません。JRubyを使用してRubyからこれを行う方法がある場合は問題ありませんが、主にWATiRコードが記述されているため、Rubyを使用する必要があります。

考えられるすべての解決策が検討されますが、データベースの知識が限られており、Ruby / WATiRからデータベースにアクセス(読み取りおよび書き込み)して、Webフロントエンドに表示されるものと照合する必要があるため、簡単な方法を探しています。

編集:私は無知の一部を取り除きました。JDBCがDBアクセス用のJava APIであることがわかったので、Ruby/WATiRスクリプトがアクセスできるようにH2データベースに接続する方法を探しています。

背景:私はDBIとSequelの宝石の経験があり、Railsをインストールしています(主にActiveRecordで遊び始めることができます)が、この問題を解決するために新しいことを学びたいと思っています。

私は優れたJavaコーダーではないと仮定しましょう。また、JRubyの使用についてもこれまで検討したことがないため、JRubyの動作については完全には理解していません。

解決策 私は最終的に、主に以下のトーマス・ミュラーの答えのおかげで、2人が互いに話し合うようになりました。PostgreSQL ODBCドライバーをインストールし、Sequelを動作させ、ODBCを使用して接続しました。SequelのPGアダプターを使用してH2PGサーバーに接続すると、まだ作業中の構文エラーが発生します。私はまだDBIに接続しようとはしていませんが、必要に応じて構文をより細かく制御できる可能性があるため、接続します。activerecord-jdbc-adapterとSequel(私のrubyパスの厄介なpg.rbファイル)の間の競合を解決するのを手伝ってくれたJeremy Evansと、Sequelを管理してくれたJeremyEvansにも感謝します。これは回答としてリストされていないので、私と同じ状況の人々にフィードバックを提供しながら、回答した人にクレジットを与えることができます。

pg(ruby-pgではない)、sequel、dbi、dbd-odbc(さらに、手動のファイル修正、詳細については私に尋ねることができます)、hoe、およびUNinstalledactiverecord-jdbc-adapterをインストールしました。

4

3 に答える 3

3

H2はPostgreSQLサーバーとして機能し、PostgreSQLODBCドライバーをサポートします

したがって、理論的には、 ruby-pgを使用できるはずです。しかし、私はそれを自分で試したことがありません。それが機能する可能性は約50%だと思います。だから答えは:多分。ただし、推奨される解決策はJRubyを使用することです。

WATiRがRubyで書かれている場合... WATiRはJRubyでも機能するはずですか?

于 2011-03-31T12:24:58.240 に答える
2

jdbc databaseという名前のようなものはありません。データベースがrubyコネクタを提供している限り、rubyを使用して任意のデータベースにアクセスできます。

于 2011-03-31T12:00:22.153 に答える
2

私見あなたの2つの最良の選択肢は、DBIまたはSequelの宝石のいずれかです。

DBI gemは、ODBCを介してdbに接続するために使用できます。ThomasがODBCをサポートするように指示するように、H2に機能がある場合は、DBIを使用してdbに接続し、クエリを実行できるはずです(もちろん、特定のテストデータをセットアップするための「更新」クエリも含まれます)。

詳細については、rubyforgeDBIページを参照してください。DBIはかなり前から存在しているため、使用方法などのオンラインチュートリアルを見つけるのはかなり簡単です。DBIはかなり低レベルであり、DBIとうまくやり取りするには、SQLまたはDBの言語を知っている必要があります。

もう1つのオプションはSEQUELgemで、ODBCまたはJDBCを介して接続するオプションがあります(JDBCにはH2サブアダプターがあります)。このGemは新しく、DBIに比べていくつかの特定の利点があります。SequelのrdocファイルのOpening_Databases部分へのこのリンクを参照してください。ここでは、JDBCを使用してデータベースに接続する方法について少し説明しています。どちらが簡単かは、ODBCがH2用にセットアップするのがどれだけ難しいかと、JDBCを機能させるためにどれだけのJavaを学習する必要があるかによって異なります。(Javaについてはほとんど知らないので、私であれば最初にODBCに向かいます)

私自身、これまでDBIを使用してきました(ODBC経由でMS SQLに接続するため)が、代わりにSequelgemを使用する方が良いのではないかと考えています。Sequelを使用すると、実際のSQLタイプのコードをたくさん記述したり、SQLクエリを深く理解したりする必要がなくなり、メソッド、シンボル、およびいくつかの文字列をあちこちで使用して、すべてのルビースタイルを実行できます。多くのdbインタラクションを実行している場合、特により純粋なOOPコードを作成できるという点で、明らかに優れていることがわかります。詳細については、2009年のRubyカンファレンスでの続編作者によるこのプレゼンテーションを参照してください。

私の場合、DBIはSQLに非常に慣れているので、必要なものに対して「十分」であり、適切なものを作成するためにdbレベルのビットをいじるのにいくつかのコマンドをあちこちで発行する以外に多くのことを行う必要はありません。試験条件。OTOHテストオラクルとしてdbに対して多くのクエリを実行し、それをUIに表示されるデータと比較する必要がある場合、Sequelを使用すると私の生活がはるかに楽になることがわかります。

于 2011-03-31T17:12:31.093 に答える