Merb + db4o
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
- merb
rdb4o
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
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 reload_classes
w configu merba (wystarczy dać na false i będzie śmigać)
Jeszcze raz gorąco polecam przejrzeć README :)
Looking for comments section?
Send me an email instead to [email protected]