teamon.eu

blah blah blah

merb + db4o

29 lipca 2009

Kategorie:

Tagi:

  • JRuby
  • db4o
  • rdb4o

Mini tutorial o tym jak skorzystać z obiektowej bazy db4o w merbie - takie małe proof of concept.

Wymagania & instalacja

  • JRuby - Przykład instalacji można znaleźć na przykład w jednym z poprzednich postów
  • db4o - .jar dostępny razem z rdb4o
  • merb - gem install merb-core
  • rdb4o
    git clone git://github.com/teamon/rdb4o.git
    cd rdb4o
    rake install
  • merbrdb4o
    git clone git://github.com/teamon/merb_rdb4o.git
    cd merb_rdb4o
    rake jruby:install

Aplikacja

1. Wygenerowanie szkieletu aplikacji (core zamiast app - nie chcemy DataMapperowego syfu :P)

merb-gen core awesome
cd awesome

2. Konfiguracja

W pliku config/init.rb:

 
dependency "rdb4o"
dependency "merb_rdb4o"
use_orm :rdb4o
 

Można teraz spróbować uruchomić aplikacje. Wszystkie komendy trzeba poprzedzić jruby -S

jruby -S merb

Ale...

 
~ No database.yml file found in /Users/teamon/Desktop/rdb4o_test/config.
~ A sample file was created called database.sample.yml for you to copy and edit.</p>
 

Trzeba ustawić parametry bazy danych - w naszym przypadku domyślne ustawienia będą w sam raz - wystarczy zmienić nazwe pliku z database.yml.sample na database.yml

mv config/database.yml.sample config/database.yml (dla leniwych)</p>

Działa! (jeee...)

3. Test first!

Eeee... innym razem

4. Model

jruby -s merb-gen model Cat

Przydałoby się parę pól:

 
class Cat
  include Rdb4o::Model
 
  field :name, String
  field :age, Fixnum
  field :nice, Boolean
end
 

db4o (jeszcze ;]) nie potrafi zapisać obiektów ruby więc trzeba wygenerować klasy javowe

jruby -S rake rdb4o:compile_models

Jeśli ktoś bardzo chce to może zobaczyć sobie app/models/java/Cat.java ale dla większości nie będzie to miły widok (fuj, Java)

Kto chce kotka?

jruby -S merb -i

 
>> Cat.create :name => "Kitty", :age => 1, :nice => true
>> Cat.create :name => "Simba", :age => 5, :nice => false
 

(Polecam pobawić się z klasą Cat - streszczenie dostępnych opcji dostępne w README)

5. Szybki kontroller i widoczek

jruby -S merb-gen controller cats

app/controllers/cats.rb

 
class Cats < Application
  def index
    @cats = Cat.all
    render
  end
end
 

app/views/cats/index.html.erb

 
<% @cats.each do |cat| %>
  <p><%= cat.name %>, <%= cat.age %>, <%= cat.nice? %></p>
<% end %></p>
 

Odpalamy (jruby -S merb), wchodzimy na http://localhost:4000 i widzimy listę zwierzaków - awesome.

To by było na tyle z mini-tutka. Wniosek jest jeden - działa ;]. Jeśli komuś java zjada właśnie 90% cpu to tylko ze względu na opcje reloadclasses_ w configu merba (wystarczy dać na false i będzie śmigać)

Jeszcze raz gorąco polecam przejrzeć README :)

Zostaw komentarz

code