00:52
mbj has joined #rom-rb
01:49
gnoll110 has quit [Ping timeout: 252 seconds]
02:02
gnoll110 has joined #rom-rb
02:50
mbj has quit [Ping timeout: 246 seconds]
05:25
vsorlov has joined #rom-rb
06:08
vsorlov has quit [Ping timeout: 245 seconds]
06:22
<
dkubb >
gnoll110: hi
06:22
<
gnoll110 >
hi dkubb
06:23
<
gnoll110 >
just discovered dm has been renamed to rom. Looking around.
06:24
<
dkubb >
gnoll110: yeah, we decided that DM2 was going to be
*so* much different from DM1 that it'd be confusing to keep the name the same
06:24
<
dkubb >
not just different code, but different from the ground up
06:24
<
gnoll110 >
still keeping to the Fowler pattern?
06:24
<
dkubb >
yeah, well, actually following it this time :)
06:25
<
dkubb >
DM1 was basically an Active Record with some minor mapping thrown in
06:25
<
dkubb >
ROM is an actual Data Mapper, where the objects and persistence are managed by a mapper, but each of those pieces doesn't know about the other
06:28
<
gnoll110 >
sinatra & dm got mentioned at a SIG I was at last month. rails/AR vs sinatra/md where made. Q&A show that most didn't realise their were patterns behind both AR & DM
06:28
<
gnoll110 >
was thinking about a talk, with refs back to fowler patterns
06:29
<
dkubb >
oh interesting. I'm not sure if PoEAA is very well known. it should be. it's given me so many ideas beyond just the work I've done on DM/ROM
06:29
<
gnoll110 >
and AR and MVC...
06:29
<
dkubb >
you were thinking about giving a talk about it?
06:30
<
gnoll110 >
yes. But not nailed flag to mast yet
06:30
<
dkubb >
yeah,
*so* much of what we do these days is influenced by fowler's patterns. I can still pick up the book, choose a random chapter on just about any topic in it and learn something
06:30
<
dkubb >
and I've probably read it a dozen times
06:31
<
gnoll110 >
I did pick a ranbon chapter often enough. Truth be told I'd rather pick a randon pattern from Alexander :P
06:33
<
dkubb >
Christopher Alexander? or someone else?
06:35
<
gnoll110 >
your observation about ROM being closer to DM patten WILL be included. Starting point will be Fowler cheat sheet from back of PoEAA. Yer Christopher Alexander, have 8 of his books so far.
06:36
<
dkubb >
much of the inspiration for ROM is coming from Python's SQL Alchemy
06:37
<
dkubb >
I'm reading through the paperback verison of that book and it's pretty awesome
06:38
<
gnoll110 >
<< COBOL programmer who self lernt Java then Ruby. Not done any Python
06:38
<
dkubb >
some of the things that make ROM stand out are: at it's core, there's something called Axiom which is a relational algebra library. it's similar in concept to what ARel 1 was, but diverges greatly from ARel 2 which is basically just an SQL generator.. Axiom attempts to provide a database API as powerful as SQL, but more consistent
06:38
<
gnoll110 >
paperback of what book?
06:39
<
dkubb >
I haven't read v1 yet, but I think I'll get it once I finish with this one
06:39
<
dkubb >
actually v1 and v2 aren't good designators.. it's more like book 1 and book 2
06:39
<
dkubb >
book 2 is the one with the SQL Alchemy details
06:41
<
gnoll110 >
thank for lead. LOL thought SQL Alchemy was a language module ;)
06:42
<
dkubb >
it's probably one of the more popular Python ORMs. I'm not sure if it's #1 or #2 behind the one included in Django
06:43
<
gnoll110 >
I'm also about to start of a project, want to use sinatra and rom. Any skels & example anywhere you know of?
06:44
<
dkubb >
I should warn you that ROM is still in development, it may only be useful for playing around with
06:44
<
dkubb >
I don't know of any skeleton sinatra projects using ROM
06:45
<
gnoll110 >
cool, will start with sinatra/dm and change over laster then
06:50
<
gnoll110 >
I'm head off now. Do want to start the business logic of this project, even if I don't have a sinatra dir structure yet
06:50
<
gnoll110 >
... today
06:54
dkubb has joined #rom-rb
07:13
snusnu1 has joined #rom-rb
08:30
snusnu1 has quit [Ping timeout: 264 seconds]
08:32
zekefast has joined #rom-rb
08:42
travis-ci has joined #rom-rb
08:42
<
travis-ci >
[travis-ci] dkubb/memoizable#58 (master - c77b8ab : Dan Kubb): The build was broken.
08:42
travis-ci has left #rom-rb [#rom-rb]
09:45
gnoll110 has quit [Ping timeout: 252 seconds]
09:58
gnoll110 has joined #rom-rb
10:19
mbj has joined #rom-rb
10:51
gnoll110 has quit [Ping timeout: 252 seconds]
11:02
gnoll110 has joined #rom-rb
11:15
mbj has quit [Ping timeout: 240 seconds]
12:07
mbj has joined #rom-rb
12:35
<
mbj >
dkubb: I have multiple libs out there that do:
12:35
<
mbj >
def lookup(object)
12:35
<
mbj >
current = target = object.class
12:36
<
mbj >
while(current != Object)
12:36
<
mbj >
handler = registry[current]
12:36
<
mbj >
return handler if handler
12:36
<
mbj >
current = current.superclass
12:36
<
mbj >
raise "No handler registred for: #{target}"
12:37
<
mbj >
# Disclamer: This is just a sketch, but you get the idea.
12:37
<
mbj >
So it looks up a handler for a given objects class, while walking up the superclass chain.
12:37
<
mbj >
I'd love to "centralize" this in a type lookup gem, I think you also have something like this in axiom-types?
12:38
<
mbj >
Than we could also add explicit caching of lookup results and DRY up axiom, morpher, mutant, ...
12:38
<
mbj >
I use this type lookup stuff for mutant reporters, and for morpher pretty print.
12:38
<
mbj >
Not to solve the acutal domain problems in morpher / mutant. Just for reporting.
12:56
kleech has joined #rom-rb
12:56
zekefast has quit [Ping timeout: 272 seconds]
13:00
zekefast has joined #rom-rb
13:52
vsorlov has joined #rom-rb
13:55
zekefast has quit [Ping timeout: 240 seconds]
13:58
zekefast has joined #rom-rb
14:56
kleech has quit [Remote host closed the connection]
15:55
mbj has quit [Ping timeout: 246 seconds]
16:11
mbj has joined #rom-rb
16:24
zekefast has quit [Quit: Leaving.]
16:37
vsorlov has quit [Read error: Connection reset by peer]
16:37
vsorlov has joined #rom-rb
16:44
vsorlov has quit [Ping timeout: 245 seconds]
16:57
vsorlov has joined #rom-rb
17:07
zekefast has joined #rom-rb
17:14
jgaskins has joined #rom-rb
17:24
snusnu has joined #rom-rb
17:24
<
mbj >
snusnu: you should be very happy to see mbj/morpher arriving in the public ;)
17:24
<
mbj >
snusnu: Split it from ducktrap some min ago.
17:24
<
mbj >
snusnu: Also working heavily on mutation cover my morpher spike.
17:25
<
mbj >
snusnu: The
*core* features of ducktrap are already working.
17:25
<
mbj >
snusnu: Apart from singalling in tracking mode.
17:25
<
mbj >
snusnu: *signalling transform abort
17:25
<
mbj >
snusnu: Once mbj/morpher is 100% mutation covered I'll release 0.1. And use that 0.1 release to implement filters in mutant.
17:26
<
mbj >
snusnu: This will allow me to support the "kill expression" feature I was talking about. So you can add as many "kill rules" you want to mutant.
17:26
<
mbj >
snusnu: For example solnic can go implicit coverage, dkubb/me can do explicit, and you can do whatever mixture you like ;)
17:27
<
mbj >
snusnu: Also the kill expressions will allow to use domain specific test selection strategies.
17:27
<
mbj >
snusnu: Unparser would be very uneasy to mutation covered via the explicit pattern.
17:28
<
mbj >
snusnu: that dispatch script will use the kill expressions from above.
17:28
<
mbj >
snusnu: I expect we'll have a config/mutant.rb with some DSL.
17:49
mbj has quit [Ping timeout: 246 seconds]
17:59
lgierth has joined #rom-rb
18:18
snusnu has quit [Quit: Leaving.]
18:25
jgaskins has quit [Quit: Leaving]
18:32
snusnu1 has joined #rom-rb
18:35
kleech has joined #rom-rb
18:40
mbj has joined #rom-rb
18:47
<
dkubb >
mbj: how do I add memoizable and thread_safe to mutant so they are zombified?
18:47
<
dkubb >
mbj: I'm unclear on how mutant figures out they need to be zombified
18:59
mbj_ has joined #rom-rb
19:03
kleech has quit [Remote host closed the connection]
19:09
<
mbj >
dkubb: Mutant implements a very simple interpreter for zombification.
19:09
<
mbj >
dkubb: It picks up all transitive reachable requires from lib/mutant.rb
19:10
<
mbj >
dkubb: But only the requires that are done via literals as children of the top level node after parsing.
19:10
<
mbj >
dkubb: Mutant can also only zombify sources that are in the $LOAD_PATH as .rb files. C exts canot be zombified.
19:11
<
mbj >
dkubb: So theoretically thread_safe (given it is pure ruby) and memoizable should be piched up automagically.
19:11
<
mbj >
dkubb: *picket
19:22
mbj_ has quit [Quit: leaving]
19:25
cored has joined #rom-rb
19:25
cored has quit [Changing host]
19:25
cored has joined #rom-rb
19:26
kleech has joined #rom-rb
19:27
kleech has quit [Remote host closed the connection]
19:39
zekefast has quit [Quit: Leaving.]
19:41
snusnu1 has quit [Quit: Leaving.]
20:26
mbj has quit [Ping timeout: 245 seconds]
20:37
snusnu has joined #rom-rb
20:43
mbj has joined #rom-rb
20:53
lgierth has quit [Quit: Ex-Chat]
21:03
jgaskins has joined #rom-rb
21:18
zekefast has joined #rom-rb
21:19
vsorlov has quit [Ping timeout: 246 seconds]
21:26
lfox has joined #rom-rb
22:12
mbj has quit [Ping timeout: 252 seconds]
22:23
zekefast has quit [Ping timeout: 246 seconds]
22:27
zekefast has joined #rom-rb
22:42
jgaskins has quit [Quit: This computer has gone to sleep]
22:45
lgierth has joined #rom-rb
22:56
lfox has quit [Quit: ZZZzzz…]
22:57
lfox has joined #rom-rb
23:28
<
dkubb >
lgierth: what does promise.rb do?
23:28
<
dkubb >
lgierth: I saw that you just submitted it to mutant as 100% covered
23:29
<
lgierth >
right, would be good to have at least a bit of documentation :]
23:29
<
lgierth >
it's an implementation of promises/a+
23:30
<
dkubb >
ahh ok, it's what I assumed
23:31
<
lgierth >
it came out of my frustration with EventMachine::Deferrable and EM::Synchrony
23:38
zekefast has quit [Quit: Leaving.]
23:39
jgaskins has joined #rom-rb
23:47
lfox has quit [Quit: ZZZzzz…]