skade has quit [Quit: Computer has gone to sleep.]
knowtheory has joined #rom-rb
skade has joined #rom-rb
snusnu has joined #rom-rb
postmodern has quit [Quit: Leaving]
cored has joined #rom-rb
snusnu has quit [Quit: Leaving.]
breakingthings has joined #rom-rb
snusnu has joined #rom-rb
<snusnu>
yo solnic
<snusnu>
if i were to write code that dumps/loads memory-adapter content to/from a yaml/json file .. where would i put it?
<solnic>
snusnu: you would use a yaml adapter :P
<solnic>
snusnu: because effectively when using yaml adapter you’re loading everything into memory
<snusnu>
solnic: sry, bbias
<solnic>
kk
<snusnu>
solnic: how does the current yaml adapter work? is stuff being written to disk on #insert,… ?
<snusnu>
solnic: cause i don't want/need that
<snusnu>
i want to setup a dev/test env, where i all i care about is that it's fast
<snusnu>
and i want to have seed data, and not loose user entered data between app reboots
<snusnu>
i guess, really, my intention is to use the memory-adapter (the reference adapter) and "fake" persistence to ease dev experience a bit
jfredett has joined #rom-rb
<cored>
hello
<cored>
solnic: something that you said yesterday got me thinking
<cored>
solnic: you said that you don't TDD Rails apps, so how do you approach testing ?
knowtheory has quit [Ping timeout: 248 seconds]
<solnic>
cored: I partially TDD when I work on rails apps
<solnic>
cored: I can’t imagine to TDD everything in a rails app because things are so slow
<solnic>
I also often prototype features by writing high-level acceptance specs but that’s more test-first kind of thing
<cored>
solnic: I see
<snusnu>
solnic: got my point?
<solnic>
snusnu: sorry, yes
<solnic>
snusnu: you need something external then to dump memory into yaml
<snusnu>
solnic: right
<snusnu>
solnic: it's no biggie, i'm just wondering if i should stick it inside my app, write a gem for me, or write a gem for rom-rb
<snusnu>
solnic: which probably leaves me with starting out inside my app :)
<solnic>
snusnu: you can’t stick it into adapter if you want to have it on demand
<solnic>
because as you said, you want to use memory store and dump to yaml only when you want
<solnic>
explicitly
<solnic>
snusnu: in other news, I just finished mutcovering virtus after axiom-types integration
<snusnu>
solnic: yeah, i'm guessing it's really for a rather specific usecase (that btw, i see myself running into quite often) .. it seems to me to be good practice to develop against memory-adapter, and have that bit of persistence to be able to do presentations of the app under dev for example
<snusnu>
solnic: awesome!
<solnic>
not 100% but it’s because those few alive mutations are not relevant
<snusnu>
solnic: also, my app is designed in a way, that when running in dev environment, it uses memory-adapter only, for speed reasons .. also, i do that in test env obviously
<snusnu>
solnic: then as we know, ignore them ;)
<solnic>
yeah, mutating warning messages for example
<snusnu>
:)
<solnic>
actually, no, there are some mutations alive that I kinda want to kill eventually - all are about removing calls to super in inherited/extended/included hooks
knowtheory has joined #rom-rb
<solnic>
but no time to kill them now, need to move forward with this
<snusnu>
fair enough
<solnic>
I will make sure nobody will remove those SUPER calls for now :P
<snusnu>
lol
<solnic>
but I must say mutant found at least 8 bugs today
<solnic>
so I’m happy
<snusnu>
sweet
<solnic>
a also improved stuff as I was improving tests and killing suckers
<snusnu>
solnic: btw, i've listened to the rr episode and you did a great job!
<solnic>
shit, really?
<solnic>
I’m scared to listen to it lol
<solnic>
I’ve read the transcript and was like “*FACEPALM* geeez I talk like a moron"
<snusnu>
solnic: heh, no really, i found it to the point and really ok!
<solnic>
fighting stress when speaking in english is hard, esp when you now they are RECORDING you
<snusnu>
solnic: there's so much things to mention, it's really hard to stay focused and not wander off, you did a good job at that
<snusnu>
solnic: heh, i can imagine
<solnic>
yes, I was so worried about loosing focus on going astray with the discussion subject
<snusnu>
solnic: that said, i'm sure that we could fill another episode at some point, mentioning more of the stuff you (rightfully) left out
<solnic>
yes, just need to make shit more useful :)
<snusnu>
solnic: yeah :)
<solnic>
holy crap
<solnic>
Showing 196 changed files with 1,895 additions and 4,388 deletions.
<snusnu>
now that's the kind of diff we like :)
<solnic>
2493 LOC removed
<solnic>
almost 2.5k LOC removed
<snusnu>
nice
<solnic>
that’s more than 2k
<snusnu>
lol
<solnic>
and less than 2.5k
<snusnu>
it is
<solnic>
that’s a shit load of LCOs
<solnic>
LOCs even
<snusnu>
!
<solnic>
now the funny part - it has better functionality, it’s simpler and I fixed some bugs
<snusnu>
the way it should be .. congrats!
<solnic>
now I’m gonna run reek just for fun
<snusnu>
heh
<solnic>
even though I already now what it’s gonna say
<snusnu>
btw, i really want reek to scream at me if the config contains reference to stuff that doesn't exist anymore
<solnic>
oops
<solnic>
my config is obsolete
<solnic>
not working with latest reek
<solnic>
heh
<snusnu>
heh
<solnic>
I think I’m gonna stop using it
<solnic>
;)
<snusnu>
hehe
<solnic>
I really think mutant is becoming the only tool that makes sense to me
<solnic>
the rest is just annoying
<solnic>
class Foo has more LOCs that the max threshold
<solnic>
so what
<snusnu>
fwiw, i still think reek provides me with enough value to keep on using it … i still miss a few things, and if i don't have something that reminds me, i forget them
<snusnu>
lol that's a silly metric
<solnic>
it works, I understand the code, I’ve got everything in one place, it’s easy to grasp it
<solnic>
I’ve got a gigantic Builder class in Virtus now
<solnic>
it sucks, I hate it, but I’m gonna push it because a) it works b) it works c) it works
<snusnu>
go for it
<solnic>
I’m sure I’ll refactor it at some point but getting this stuff working was HARD
<solnic>
virtus supports a rather neat syntax with Array[String] and all that stuff
<snusnu>
yeah dude, time to celebrate, refactoring can come later
<solnic>
totally
<snusnu>
solnic: btw, when i listened to the rr episode yesterday, i smiled, especially when the conversation moved towards (early) input sanitization/validation .. the stuff possible with mbj's libs like vanguard/ducktrap .. along with the design "promoted" with substation/subway .. allows for an insanely clean separation of that kind of logic
<snusnu>
solnic: i also think that eventually, i won't need anything like form objects at all
<solnic>
snusnu: we use virtus in gitorious with a library called use_case
<snusnu>
solnic: iirc that's the one that more or less does what the very first version of substation did
<solnic>
how about adding support for % threshold to mutant config?
<snusnu>
that'd involve adding config file support for mutant i guess, but yeah, should be done
<solnic>
snusnu: we could have it in the cli
dkubb has joined #rom-rb
<solnic>
—threshold 97.16% :)
<snusnu>
solnic: as a start, yes
<solnic>
cause that’s the current status of virtus
<snusnu>
hah, why did i think that this is the case … :)
<dkubb>
good morning
<solnic>
oops sorry 96.16%
<snusnu>
hey dkubb
<solnic>
morning dkubb
<solnic>
dkubb: sorry for bothering you in the morning but can you fix that axiom-types issue? :)
<solnic>
I’m wrapping up the refactor so would be cool if that was fixed
<dkubb>
solnic: I can look at it tonight
<solnic>
it’s no buggy since I’ve got a workaround in place
<solnic>
2955 less lines of tests in virtus now. most mutations are killed (all significant ones). I’m really curious to know if I introduced some regressions
<dkubb>
solnic: did you refactor the interface? if not then you could always pull out your old tests and run them against the code
<solnic>
I left old integration tests untouched
<solnic>
interface didn’t change
<solnic>
running prev unit tests against refactored codebase will produce million of failures
<solnic>
because internals changed
<solnic>
like, attribute.new accepts type and options now
<solnic>
vs name, type and options
<solnic>
so internal interface changed
<dkubb>
right
<solnic>
mutant rocked btw
<dkubb>
are you going to do a few rounds of rcs before 1.0?
<solnic>
found many bugs today
<solnic>
helped me cleaning up stuff
<solnic>
I noticed things that I could simplify or even remove completely
<solnic>
amazing stuff
<solnic>
dkubb: yeah I plan at least one more beta, then rc then final
<solnic>
I hope people aren’t relying on the attribute subclass hierarchy
<solnic>
if they are, I will just add it back but those would be empty classes
<solnic>
no options no custom behavior
<solnic>
I guess I should add back prev interface for creating attributes too with a deprecation warning
<solnic>
should be easy to do
<solnic>
people are actually building attribute instances “manually” so now it would not work for them
<dkubb>
you could also start documenting those classes using @private
<solnic>
we’ll see if I need to add them back
<solnic>
maybe people won’t care ;)
<solnic>
dkubb: is it intentional that Axiom::Types::Boolean.primitive is BasicObject?
<dkubb>
solnic: I believe so, because it's one of the few cases where there are multiple primitives that map to the type
<solnic>
hmm ok
<dkubb>
solnic: if I recall, it's #include? method does handle instance of TrueClass and FalseClass
<dkubb>
#primitive isn't really a good abstraction in those situations
<solnic>
I’ve got a small edge case now that if you do Attribute.build(Axiom::Types::Boolean) it will not figure out that we want to create Attribute::Boolean instance because of the primitive not being TrueClass
<solnic>
but I’m actually wondering if I could just nuke Attribute::Boolean too
<solnic>
need to think about this a bit more
<dkubb>
oh how I wish there was a Boolean superclass
<dkubb>
I've seen cases where people define a Boolean module and mix it into TrueClass and FalseClass, so that they can go: object.kind_of?(Boolean)
<dkubb>
the problem with that is naming conflicts
<solnic>
yeah I know
<solnic>
yeah, I think the final touch in this integration refactor is to get rid of boolean/hash/collection/embedded_value subclasses
<solnic>
I’ll do it probably as a second step
<solnic>
need to wrap this up, 88 commits already in the PR
<dkubb>
yeah, that's a long lived PR
<dkubb>
I've begun to break down some of my changes so if the PR gets to a state of equivalent functionality with improved internals, I will think about merging it into master and then open a new PR for the remainder
<dkubb>
it's better to think about improves as being a specific direction, rather than an absolute state