Rogueを使ってみます。
Rogueについてはこちらを参照。
Rogue: A Type-Safe Scala DSL for querying MongoDB
Foursquareが公開しているMongoDBクエリ用のライブラリ。型安全なScala-DSLだそうで。
型安全なクエリを実行できるのは素晴らしいですね。
正直あまりよくわかっていないのですが、ひとまず開発環境の足がかりを作ります。※赤字は追記・変更点。
project/build/LiftProject.scalaを下記の通り変更。
import sbt._
class LiftProject(info: ProjectInfo) extends DefaultWebProject(info) {
val liftVersion = "2.3"
// uncomment the following if you want to use the snapshot repo
val scalatoolsSnapshot = ScalaToolsSnapshots
// If you're using JRebel for Lift development, uncomment
// this line
// override def scanDirectories = Nil
override def libraryDependencies = Set(
"net.liftweb" %% "lift-webkit" % liftVersion % "compile",
"net.liftweb" %% "lift-mapper" % liftVersion % "compile",
"org.mortbay.jetty" % "jetty" % "6.1.22" % "test",
"junit" % "junit" % "4.5" % "test",
"ch.qos.logback" % "logback-classic" % "0.9.26",
"org.scala-tools.testing" %% "specs" % "1.6.6" % "test",
"com.h2database" % "h2" % "1.2.138",
"com.foursquare" %% "rogue" % "1.0.14-SNAPSHOT" withSources()
) ++ super.libraryDependencies
}
sbtを起動し、updateして必要なライブラリをすべてダウンロードできているようであればOKです。
"com.foursquare" %% "rogue" % "1.0.14-SNAPSHOT" withSources()の"1.0.14-SNAPSHOT"については、下記のリポジトリを参考にその時々のバージョンを指定して下さい。
http://scala-tools.org/repo-snapshots/com/foursquare/
続いてMongoDBへの接続設定。
正直なところ下記を参照して適当に設定しています。
http://www.assembla.com/spaces/liftweb/wiki/Mongo_Configuration
src/main/scala/code/model/MongoConfig.scalaを下記内容で作成。
package code.model
import net.liftweb._
import mongodb._
import util.Props
import com.mongodb.{Mongo, ServerAddress}
object MongoConfig {
def init: Unit = {
val srvr = new ServerAddress("127.0.0.1", 27017)
MongoDB.defineDb(DefaultMongoIdentifier, new Mongo(srvr), "foo")
}
}
別マシンでmongodを実行している場合や、DB名を指定する場合にどういうことをすれば良いのかは不明ですが、まぁ気にしないことにします。
そしてsrc/main/scala/bootstrap/liftweb/Boot.scalaにて、上で定義した設定処理を実行するように下記を追記。
class Boot {
def boot {
if (!DB.jndiJdbcConnAvailable_?) {
//MongoDb boot
MongoConfig.init
(後略)
ひとまず設定はこんなところです。
********
TODO
- Lift+RogueでCRUDしてみる。
サンプルはgithubにて公開。
https://github.com/RKTM/Lift-MongoDb-Rogue-Sample
0 件のコメント:
コメントを投稿