Bok!
Hvala na opširnom odgovoru :-)
OK, dakle vezano za perzistenciju, tu mi je čini mi se stvar više manje jasna.
Nisam još u svom projektu došao do točke u kojoj bi se odlučio za neki ORM ili drugu opciju, ali je taj dio ionako izdvojen/izoliran u obliku gem-a koji radi sve u memoriji, a koji ću zamjeniti sa nečim konkretnim kad dođe vrijeme. Taj dio priče oko perzistencije ima sigurno još momenata i stvari koje će trebati doraditi ali recimo da mi je taj dio priče na mjestu, a o brzini testova da i ne pričam !!!
Nekoliko resursa na tu temu:
Ono što me muči je kako to užičiti u railse. Kod mene je konkretno stvar da imam neki JSON API koji treba svoj administracijski i reporting web.
Railsi bi mi trebali dakle biti neki delivery mehanizam za taj dio priče, odnosno to mi je ideja.
Ali neznam kako pametno napraviti da railsi rade sve sa business layer slojem.
Prva opcija koju spominjem je recimo ovo:
class RailsBusinessObject < BusinessLayer::BusinessObject
extend ActiveModel::Naming
include ActiveModel::Conversion
attr_accessor :persisted
def initialize(*)
super
@persisted = true if @persisted.nil?
end
def to_param
id
end
def self.from_param(param)
find_by_id(param)
end
def persisted?
@persisted
end
end
I onda na mogu to dalje voziti kroz railse kao da je riječ o normalnom modelu na koji smo navikli (AR, mapper, ...).
To ukljucuje CRUD operacije ali i taj reporting i slicno (dakle nije samo trivijalni CRUD u pitanju).
Ali, taj nacin mi se cini i dalje malo blesav, a i čitajući o SOA arhitekturi, ima smisla da rails dio stvarno bude samo frontend a da sve ide kroz taj API.
Stoga je ideja bila (inspirirano roar gem-om i SOA pričom) da se to zavrti kroz REST, i tu zapinjem :-)
Ta organizacija me muči, gdje šta smjestiti, kako povezati a da bude DRY i slično.
E, hvala na onom linku za hexagonal architecture, obavezno pročitam!
I daj please ako može me uputi na DAS epizodu sa tom CachedScore pričom? (pratim njegove screencaste od nedavno)
Hvala!
P.S. Možda bi imalo smisla napraviti neku oglednu app, ništa komplicirano, a što bi nam dalo nešto konkretno o čemu možemo pričati...
Pa eto, ako ima zainteresiranih...