1

私がsinatraアプリケーションのコーディングを始めたとき、私はそれを使ったことはありませんでした。私はRoRの経験があり、まだ経験がないことに注意してください。1 つの .rb ファイルと 1 つの .haml があり、満足していました。アプリケーション全体がますます複雑になるため、.rb ファイルを約 10 個の「ライブラリ」ファイルに分割する必要がありました。

一部のアプリケーション ログ/情報を csv ファイルに保存していますが、csv ファイルにアクセスすると競合が発生します。したがって、「適切な」データベース ソリューションを導入する必要があると思います。Ruby (sinatra) アプリケーションの一部にしたいです。

sintra アプリケーションに「軽量」SQL データベースを導入するにはどうすればよいですか?


私は ruby​​ 1.8.7 (2010-08-16 パッチレベル 302) [i386-mingw32] を使用しており、まもなく 1.9 にアップグレードします (できれば)

4

4 に答える 4

3

Sequelを見ることをお勧めします。非常に柔軟で強力で、SQLite、MySQL、Postgres、Oracle、およびその他の DBM とうまく連携します。データベースとのやり取りについては、独断ではありません。ORM として、または単純なデータセットと共に使用でき、埋め込み SQL またはよりプログラム的なアプローチを可能にします。

于 2012-08-23T07:12:15.313 に答える
1

ORM には、ActiveRecord と Sequel の両方が推奨されます。データベースについては、sqlite3 で十分だと思います。また、mysql または pg を選択できます。

active_record を使用する場合は、この記事が非常に役立ちます。Sequel を選択する場合は、Sequel のドキュメントをここでお読みください。

gem をインストールした後。データベースに接続するためのコードを書き始めることができます。次に、データベース テーブルを構築するための移行タスクが必要になる場合があります (対応するモデルを構築することを忘れないでください)。両方の gem は、移行の構文が似ています。その後、csv データをインポートして完了です。

于 2012-08-23T07:50:27.133 に答える
0

どちらを使用しても問題なく、オブジェクトの永続Active Record性をアプリDataMapperに追加できました。Sinatra人々は私Sequelにとても良いと言いますが、哲学的には私見から離れた世界ではありませんActive Record.

Active Record移行ファイルのコレクション内のデータベースとテーブル定義のセットとしてテーブルをSequel綴り、データベーステーブルの構築または更新に使用されるスキーマにマージします。基礎となる SQL データベースに本当に関心がある場合は、これらのいずれかが最適です。私はそれらが1つのうち6つ、もう1つが半ダースであることを発見しました。

DataMapperよりオブジェクト中心であり、オブジェクト独自のクラス定義で必要なプロパティとオブジェクトの関係を定義できます。そして、アプリの起動時に呼び出しを行うDataMapper.auto_upgrade!と、オブジェクト グラフに合わせてデータベースがアップグレードされます。利点は、オブジェクトが持つ可能性のあるプロパティを見つけるために探す場所が 1 か所しかないことです。欠点は、基礎となるデータベースの詳細をあまり制御できないことですが、マッピングを厳密に定義することは不可能ではありませんが、DataMapperデータベース テーブルのオブジェクト グラフを気にする場合にはうまく機能します。

幸いなことに、オブジェクト グラフからSQLデータベース テーブルへのマッピングを定義すると、ほとんどすべて同じように機能します。すべてが、関連するオブジェクトのコレクションの遅延ロードまたはプリエンプティブ ロード、多対多の関係、ポリモーフィズムなどをサポートし、構成とシードの詳細のみが異なる傾向があります。

DataMapperアプリのオブジェクト グラフはまだ流動的であるため、データベース スキーマを投げたり破棄したりする速さだけを理由にプロジェクトを開始することがよくあります。Active Recordスキーマが落ち着いたらすぐにリファクタリングして使用します。Sequel次のプロジェクトでは、人々が絶賛しているように見えるので、やってみようと思います。

于 2012-08-23T08:09:48.377 に答える
0

Sinatra で datamapper を使用して成功しました。他の投稿のように、Sequel と Active Record も使用できます。ただし、Active Recordを使用する利点の1つは、RORを使用/学習したい場合は、Active RecordがデフォルトのORMであるため、検討する必要があるかもしれません.

ORM ルートに行きたくない場合は、SQL クエリを作成して実行できる SQL-Ruby gem をいつでも使用できます。ウェブサイトhttp://sqlite-ruby.rubyforge.org/のコード例を次に示します。

require 'sqlite'

db = SQLite::Database.new( "data.db" )

db.execute( "select * from table" ) do |row|
  p row
end

db.close
于 2012-08-23T12:46:26.357 に答える