<snusnu>
first spike of new rom-mapper works! (features mapping of embedded values and embedded collections): http://pastie.org/8464258
<snusnu>
(specs at the bottom)
<jgaskins>
snusnu: That's pretty sweet.
<snusnu>
jgaskins: it is, isn't it ;) and thx!
<snusnu>
240locs
<snusnu>
ducktrap is so cool
<jgaskins>
Embedding objects was pretty hard to get working in Perpetuity, but it's too good a feature when you use it right to overlook it.
<snusnu>
yeah, i basically think of it as belongs_to (well, that's the most common usecase i can think of at least)
<jgaskins>
snusnu: I'm very impressed that you managed to do it with only three conditionals (which are only for detecting blocks) in the entire thing.
<jgaskins>
Oooh, I see, you're using different methods to declare them.
<snusnu>
heh yeah, the one necessary "case expression" is done via builder subclasses
<snusnu>
a specific builder for each of the 3 types of attributes
<jgaskins>
that's really nice. i thought about doing the same thing, but ended up just using the "attribute" declaration for everything and sorting it out with all kinds of conditionals.
<jgaskins>
i bet your implementation here will be significantly faster for serializing/deserializing.
<snusnu>
the way rom(-mapper) works, is that it only ever sees relations (you can think of those as arrays/sets of potentially nested hashes .. sometimes they have nested hashes (an embedded value), sometimes nested arrays/sets (embedded collections)
<snusnu>
axiom takes care of actually building up those relations
<snusnu>
so (in axiom) you'd do: people_relation.join(address_relation).join(tasks_relation).wrap(:address, address_relation.header).group(:tasks, tasks_relation.header)
<jgaskins>
and axiom is the data-source interface, right?
<snusnu>
which would give you the appropriately nested relation, with each tuple having exactly the structure the sample mapper in the pastie would be able to digest
<snusnu>
yeah, basically, it's simply an implementation of relational algebra .. it works completely in memory .. *but* .. it internally builds up an AST of operations, that can then be serialized into almost any kind of query language
<snusnu>
by working completely in memory, it allows us to join data from arbitrary sources, as long as they provide an adapter for it (basically an axiom ast visitor, that produces a query language)
<jgaskins>
ah, wow. solnic was trying to explain it to me a while back, but he didn't mention that part.
<jgaskins>
he did say it was going to be powerful, but that's starting to sound like an understatement. :-)
<snusnu>
hehe
<snusnu>
it's gonna be *seriously* awesome if you ask me ;)
<jgaskins>
lol
<snusnu>
one more thing .. when performing an axiom operation, the involved adapters can each decide which operations to push down to the backend, and which should/must be handled in memory (e.g. because a backend doesn't support them) .. so over time, we'd only have to fall back to in memory, for the really obvious things .. if something can be handled natively, it can be pushed down
<snusnu>
and another thing … and that's imo the most powerful one of them all … it provides "writable views" … so you'd join as many tables as you want, and as long as you don't apply certain operations (like projecting away keys) .. you still can #insert #update #delete into those relations
<snusnu>
that holds for views that span a few tables within a single database, as well as for views that span, say, github, postgres, mysql and redis
<snusnu>
heh
<jgaskins>
yeah, that's one thing i've been wondering how to tackle — deciding what to handle in Perpetuity and what to hand off to the data source. the problem is that right now, Perpetuity is basically only two main layers: the user does everything through the mapper, which talks directly to the data source.
<jgaskins>
seemed like a good idea to push the gem out, but now i'm noticing that i'm a little restricted until i can make things a bit more flexible.
<jgaskins>
s/directly to the data source/directly to the data source adapter/
<snusnu>
i think that if a lib solves a problem that needs solving (and that certainly is the case for the domain we all are working on) .. then it's good to get it out and get feedback
<snusnu>
i've been wanting to have a closer look at perpetuity for a while now, but sadly i haven't yet gotten around to :/
<jgaskins>
if you like, maybe sometime this weekend we could pair on it and i could walk you through the major parts of it. there isn't a lot of code to it.
<snusnu>
that'd be cool! i probably won't have time during the weekend tho (2 parties, one friday, one saturday so i dunno about sunday ;)
<jgaskins>
lol i totally understand. parties must be had on the weekend! ;-)
<snusnu>
but if that works for you, we could do it sometime next week?
<jgaskins>
yeah, definitely!
<snusnu>
heh right
<jgaskins>
any day in particular next week?
<snusnu>
probably in the 2nd half of the week? what about thursday?
<snusnu>
i should also add that i'm living in CET, it's ~03:30AM right now .. but, i'm normally up till very late :)
<jgaskins>
lol i see. i was the same when i lived in Australia and even when I moved back to the US. then i got a 9-5 job.
<snusnu>
hehe
<jgaskins>
i don't think i have anything going on on thursday, so it should be a go for me.
<snusnu>
i hate those, well, i never had one either, so ...
<jgaskins>
lol
<snusnu>
sweet
<jgaskins>
yeah, had to give up the flexibility of consulting when i gave up the responsibility of it. :-)
<snusnu>
btw, i'm fine with starting earlier than it is now ;) but anything around/after midnight around here should be cool
<snusnu>
hehe, i know what you mean :)
<jgaskins>
cool. it's about 9:30pm here, so i'm 6 hours behind you. i get home around midnight your time.
<snusnu>
cool, then we'll find a time, 8-9pm your time probably is still fine with me :)
<jgaskins>
sounds great. :-)
<snusnu>
it does
<snusnu>
if you're interested, i might as well show you around the various rom bits afterwards, i'm sure that both projects can learn from each other
<jgaskins>
yes, definitely.
<snusnu>
sweet, very much looking forward to it!
irclogger__ has joined #rom-rb
bf4 has joined #rom-rb
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
jgaskins has quit [Quit: This computer has gone to sleep]
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
snusnu has quit [Quit: Leaving.]
CraigBuchek has joined #rom-rb
CraigBuchek has quit [Client Quit]
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
bf4 has quit [Ping timeout: 265 seconds]
irclogger__ has quit [Ping timeout: 244 seconds]
zekefast has joined #rom-rb
zekefast has quit [Quit: Leaving.]
mbj has joined #rom-rb
mbj has quit [Ping timeout: 240 seconds]
mbj has joined #rom-rb
zekefast has joined #rom-rb
zekefast has quit [Quit: Leaving.]
mbj_ has joined #rom-rb
mbj has quit [Ping timeout: 260 seconds]
postmodern has quit [Quit: Leaving]
mbj has joined #rom-rb
mbj has quit [Client Quit]
mbj_ has quit [Ping timeout: 245 seconds]
mkristian has joined #rom-rb
irclogger__ has joined #rom-rb
bf4 has joined #rom-rb
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
irclogger__ has quit [Remote host closed the connection]
irclogger__ has joined #rom-rb
bf4 has quit [Ping timeout: 245 seconds]
irclogger__ has quit [Ping timeout: 272 seconds]
kleech has joined #rom-rb
snusnu1 has joined #rom-rb
snusnu1 has quit [Quit: Leaving.]
snusnu has joined #rom-rb
jgaskins has joined #rom-rb
snusnu has quit [Quit: Leaving.]
snusnu has joined #rom-rb
mbj has joined #rom-rb
irclogger__ has joined #rom-rb
bf4 has joined #rom-rb
theCrab has joined #rom-rb
<theCrab>
Howdy!
CraigBuchek has joined #rom-rb
<mbj>
theCrab: hi
<theCrab>
mbj: am good hbu?
<mbj>
theCrab: Yeah allright.
<mbj>
theCrab: Feeling good.
<mbj>
theCrab: you?
<theCrab>
mbj: paddling like a goose. Keeping afloat. Been a while
<theCrab>
Has anyone here setup an automatic way to startup a rails app on windows VISTA specifically?
<mbj>
afaik no
<mbj>
theCrab: sorry I'm commercially busy.
<theCrab>
mbj: thats alright. Its not a very ruby like env for me either. My client has a small app she runs for her ticketing taxis. She wanted to stop using the CLI for starting it up.
zekefast has joined #rom-rb
jgaskins has quit [Quit: This computer has gone to sleep]
jgaskins has joined #rom-rb
<elskwid>
Mornin' everyone
bf4 has quit [Ping timeout: 272 seconds]
<mbj>
elskwid: hola
<mbj>
elskwid: funny how easy it is to get a dogmatic intervention in our discussion by dhh ;)
<mbj>
elskwid: Refering to the twitter "size of code separation thing" :D
<elskwid>
mbj: No kidding. I got a ton of stuff from the Rails team too all about the semver.
<elskwid>
damn that solnic!
<elskwid>
I make ONE snarky Rails Tweet ...
<mbj>
heh
<mbj>
elskwid: AFAIK ist just not possible anymore to semver rails.
<mbj>
elskwid: Test coverage is weak. So test cannot easily spot public interface changes anymore.
<mbj>
elskwid: AFAIK they dont publish ANY test coverage value?
<mbj>
elskwid: You know line-coverage is not really an "coverage" :D / I cannot say something different as author of mutant :P
<elskwid>
mbj: Even then. The Rails project has no problem charting new ground. They could decide "we're breaking things up for Rails 5" and "we're doing strict semver", etc.
kleech has quit [Remote host closed the connection]
kleech has joined #rom-rb
kleech has quit [Read error: Operation timed out]
snusnu has quit [Quit: Leaving.]
theCrab has quit [Quit: Gone Forever!]
mkristian_ has joined #rom-rb
mkristian has quit [Ping timeout: 244 seconds]
jgaskins has quit [Quit: This computer has gone to sleep]
<mbj>
elskwid: Yeah I agree (possiblity of charting new ground).
mkristian_ has quit [Ping timeout: 245 seconds]
jgaskins has joined #rom-rb
mkristian_ has joined #rom-rb
zekefast has quit [Quit: Leaving.]
kleech has joined #rom-rb
kleech has quit [Remote host closed the connection]
kleech has joined #rom-rb
kleech has quit [Ping timeout: 272 seconds]
mbj has quit [Ping timeout: 245 seconds]
mkristian_ has quit [Quit: bye]
dkubb has joined #rom-rb
zekefast has joined #rom-rb
snusnu has joined #rom-rb
snusnu has quit [Client Quit]
mbj has joined #rom-rb
mbj_ has joined #rom-rb
<mbj_>
dkubb: hola!
mbj has quit [Quit: leaving]
mbj_ is now known as mbj
<mbj>
dkubb: and next from new nick
<mbj>
dkubb: Did you snusnu showed you the ducktrap based mapper?
<dkubb>
mbj: hello
<dkubb>
mbj: yeah, he showed me what he planned.. that's pretty awesome
<mbj>
dkubb: Im very proud to have a more significant impact on rom now ;)
<mbj>
dkubb: Indirectly :D
<mbj>
dkubb: Gonna go to sport soon, than cleanup my spike for ducktrap-next in a branch.
<mbj>
dkubb: I really hope ducktrap becomes as flexible we need.
<mbj>
dkubb: BTW I'm open for a name change.
<mbj>
dkubb: "morpher" ?
snusnu has joined #rom-rb
<mbj>
snusnu: welcome back ;)
snusnu1 has joined #rom-rb
snusnu has quit [Ping timeout: 240 seconds]
<dkubb>
mbj: btw, did I tell you axiom is now 100% mutation covered
<dkubb>
mbj: I also fixed all the generic mutations too
<dkubb>
mbj: morpher isn't bad, even morph
<mbj>
dkubb: yeah
snusnu1 has quit [Quit: Leaving.]
jgaskins has quit [Quit: This computer has gone to sleep]
jgaskins has joined #rom-rb
dkubb|away has joined #rom-rb
snusnu1 has joined #rom-rb
dkubb has quit [Ping timeout: 248 seconds]
irclogger__ has quit [Ping timeout: 245 seconds]
dkubb has joined #rom-rb
dkubb|away has quit [Ping timeout: 272 seconds]
_br_ has joined #rom-rb
mbj has quit [Ping timeout: 245 seconds]
jgaskins has quit [Quit: This computer has gone to sleep]