OmniBaseの導入

@ さんがtwitterでOmniBaseの導入方法をつぶやかれているのですが、見失いそうなので手順をまとめておきます。@ さん、いつもありがとうございます!

はじめに

まず利用するPharoは、先頃公開された Pharo 1.4 Summer とする。

http://www.pharo-project.org/home

また、Seasideで使うためにOmniBaseを導入するため、先にSeaSideをインストールしておく。

Seasideの導入

Pharo起動時に表示されるWorkspace内にある、 MetacelloConfigurationBrowser open. をdoitし、ConfigurationBrowserを出す。

次に、ConfigurationsタブにあるSeaside30を右クリックして、Install Configuration(stable)を選ぶ。

しばらくするとロードが始まるので終了まで待つ。

OmniBaseの導入(2012/7/26追記)

UntrustedタブにはOmniBaseも載っている。しかし、@kuritar さんが指摘されているように、そのまま右クリックではインストールできない(どうやらstableバージョンがない)ため、いったんLoad configurationを選んでロードしておき、別にWorkspaceを開いて以下をdo itする。

ConfigurationOfOmniBase load.

こちらもしばらく待てばインストールが完了する。

SystemBrowserでOmniBase-Testsのテストを実行すると、OmniBaseTest>>#testObjectLockingとOmniBaseTest>>#testObjectLocking2で失敗する。

なお、@kuritarさんによると、Windowsでは他のテストも失敗するらしい。この原因は OmniBaseTest>>#dirの中のディレクトリセパレータが”/”となっているからで、以下のように修正すれば良いだろう。

dir
^ FileDirectory default fullName, FileDirectory separatorString, 'OmniBaseTester'

OmniBaseJの導入(2012/7/22修正)

このままだと日本語の処理に問題があるようなので、 @umejava さんのOmniBaseJを導入する。

なお、OmniBaseJでは代入に「:=」でなく「←(実際にはアンダースコア文字)」を用いているため、インストールの前に以下をdo itしてコンパイルできるようにする。

Scanner allowUnderscoreAsAssignment: true.

Monticelloブラウザを起動して、以下のレポジトリを追加する。

MCHttpRepository
location: 'http://squeaksource.blueplane.jp/OmniBaseJ’
user: ''
password: ''

Openでレポジトリブラウザを開いてOmniBaseJをLoadすれば良い。

また、OmniBaseJではscaledIdentityHashというメッセージを使っているが、Pharoには存在しないため identityHash で置き換える必要がある。

World menu->Tools->FinderでSelectorをSourceに変更してscaledIdentityHashを探すと、ODBIdentityDictionary内に6つのメソッド内で使っていることがわかるので、それぞれ identityHash に置き換える。

OmniBaseJ-Coreカテゴリに移ったOmniBaseTestでテストを実行すると、新たに OmniBaseTests>>#testStoreLoadByteArrayKey でファイルが存在しないというエラーが発生するが、create a new fileを選べばテストが通るようになる。

DBAccessorの導入(2012/7/22追記)

OmniBaseを使いやすくするために、 @ さんがDBAccessorというラッパークラスを作成されているので導入する。特に、「SeasideへGo!(第4回) http://www.ogis-ri.co.jp/otc/hiroba/technical/seaside/seaside4/ 」を使う時には必須である。

Monticelloブラウザを起動して、以下のレポジトリを追加する。

MCHttpRepository
location: 'http://squeaksource.blueplane.jp/DBAccessor’
user: ''
password: ''

Openでレポジトリブラウザを開いてDBAccessorをLoadすれば良い。