Index

Show enters and exits. Hide enters and exits.

00:28:52boyscoutExpose the SystemExit to at_exit handlers. Fixes #395. - d6ce012 - Evan Phoenix
00:28:52boyscoutAdd String#secure_compare @x-api - d236fdc - Evan Phoenix
00:41:10boyscoutCI: rubinius: d236fdc successful: 3500 files, 14306 examples, 42065 expectations, 0 failures, 0 errors
00:47:29boyscoutDon't use self in a block that might be instance_evald. Fixes #399. - b3d1019 - Evan Phoenix
00:52:10boyscoutFix R::CompiledMethod#add_metadata to allow multiple keys - 349f609 - Tim Carey-Smith
00:52:21boyscoutFix the docs for enabling the profiler graph output - d8297e3 - Tim Carey-Smith
00:55:19evantim's now on the board.
00:55:28brixenwoot
00:55:53boyscoutCI: rubinius: b3d1019 successful: 3500 files, 14306 examples, 42065 expectations, 0 failures, 0 errors
01:08:35goyox86brixen: http://github.com/evanphx/rubinius/issues/issue/407
01:08:44evanbrixen: finally fixing the block arguments issue.
01:09:16evangoyox86: you're missing a spec
01:09:27evanif this is an unknown behavior
01:10:39goyox86evan: i don't undertand i just fixed a existing failing spec
01:10:47evanok
01:10:51evanthats what i was asking
01:10:54evanso you're fixing a tagged spec?
01:11:03goyox86evan: yup
01:11:09evank
01:16:55brixengoyox86: super
01:17:04brixenevan: you mean #398?
01:17:16evanyep.
01:17:19brixensweet
01:17:24evani dove into 1.8 to figure out what was up
01:17:30evanthe check is basically
01:17:49evanif(not_a_lambda && args->len == 1) { args = args->ptr[0]; }
01:17:58evanwe needed the not_a_lambda check.
01:18:04brixenahh I see
06:08:17jakedouglascan someone help me with where the capi specs are
06:12:58jakedouglasnevermind
07:09:49boyscoutFile#truncate now raises an IOError if file is not opened for writing - 4dc5616 - Jose Narvaez
07:09:49boyscoutRemove tag for now passing spec - 452da90 - Dirkjan Bussink
07:18:11boyscoutCI: rubinius: 452da90 successful: 3500 files, 14307 examples, 42066 expectations, 0 failures, 0 errors
07:23:00brixenuh oh
08:25:28dbussinkbrixen: uh oh?
08:34:13khaaseoh uh
08:34:21khaasealso, jruby is faster
08:34:33khaaseand ruby doesn't scale
08:34:57khaaseyou guys better start looking into Scala
08:37:20dbussinkwe need more erlang
08:37:34dbussinkand store everything into cassandra
08:37:35dbussinkor redis
09:07:31rueI hear NotevenNoSQL is the next best thing
09:13:20khaaseonly if it's faster than mongodb
09:34:10dbussinkNoWaySQL it's faster
14:16:36dbussinkcremes: you can't build rubinius while another version is active with rvm
14:16:59dbussinkyou can see it mixes up some stuff with your system ruby and the rvm one
14:18:00dbussinkeven if it compiles completely, if rvm is active a rbx version will pick up the GEM_PATH etc. so you'll get into problems anyway
14:18:09dbussinkcremes: so i suggest using the default ruby during build time
14:20:05cremesdbussink: really? i thought rvm used ruby 1.87 to compile & install rbx
14:20:34cremesthe rvm boys are on the case; hopefully they'll be able to get this all figured out and patched into rvm
14:27:12dbussinkcremes: well, you can see in the gist it picks up another ruby version
14:27:28dbussinkwith which it compile the melbourne gem there
14:27:36dbussinkand therefore it breaks with the 1.9 version
14:27:50dbussinkcremes: but even if the building is fixed, you will get into runtime issues
14:28:00dbussinkwhich are not fixable by definition actually...
14:28:08dbussinkbecause rbx should honor GEM_PATH etc.
14:29:39Suttodbussink: so during the build / install process for rbx it uses GEM_PATH / GEM_HOME? (that makes sense, just means I'll have to introduce a work around)
14:30:06brixendbussink: this was the uh oh http://gist.github.com/475473
14:30:19dbussinkSutto: well, it tries to build an extension for the ruby version that it's compiled with
14:30:23brixendbussink: since it happened at the very end, I'm worried it was a finalizer
14:30:39dbussinkSutto: and from the gist cremes it shows it picked up the system ruby and not the active rvm version
14:30:53dbussinkbrixen: reproduceable then?
14:31:18brixenI dunno, my internets went out right after I wrote that
14:31:24brixenand I went to bed :P
14:32:48Suttodbussink: oh? based off http://gist.github.com/474446 it was running configure + rake install inside the environment for ruby-1.8.7-p249
14:33:14Suttowhich would possibly explain it (in this case looking through it seems it's building fine etc but the actual rake install isn't overwriting the rbx file)
14:33:21dbussinkSutto: i think two things are being mixed up here
14:33:36dbussinki was talking about http://github.com/evanphx/rubinius/issues#issue/408
14:33:49dbussinkwhich is building rbx outside rvm, but with the active ruby being an rvm activated version
14:34:18Suttoah, I hadn't seen that
14:35:10Suttocremes: in that one, you need to do: rvm use system before building (that clears all the env vars etc)
14:41:28cremesgot it
14:42:05cremesi'm the one who got the 2 issues confused
14:42:28cremesi thought dbussink was referring to the rvm rbx-head issue and not the git issue i opened earlier today
14:42:36cremesi'll close that one
14:42:41dbussinkok, cool :)
14:42:55dbussinkbtw, i've also seen that rbx install rbx-head doesn't rebuild properly
14:43:02dbussinkthe version isn't updated
14:44:42Suttodbussink: yeh, that's the one I was having issues with - it seems it's setting it up correctly but not actually installing it
15:34:36brixendbussink: http://gist.github.com/475580
15:34:59brixendbussink: I may have an opt too, but I'm going for simple and correct first
15:35:39dbussinkbrixen: pretty impressive :)
15:35:52brixenwell, it's just C++, it better be as fast :P
15:36:04dbussinkbrixen: friend of mine has some stuff that does packing, i can check what he uses
15:36:09dbussinkwriting png files
15:36:35brixenmri actually mutates the value for endianness before catting to a string
15:36:52brixenI push back each byte on a C++ str and create the ruby string at the end
15:37:09brixenwhich makes it extremely obvious and simple what is happening
15:37:25brixenbut I'll look at that method once everything is working
15:38:38evanhi guys
15:38:59brixenmorning evan
15:39:04brixenhbd to abby!
15:39:08evanbrixen: pack is looking awesome!
15:39:13evanbrixen: :D
15:39:20evanshe just headed out
15:39:24evanshe'll see your tweet.
15:39:24brixenit's coming along
15:39:28brixenheh, cool
15:39:44brixenevan: so, got this on one spec run http://gist.github.com/475473
15:39:48brixencan't repro it
15:40:02brixenbut the fact it happened at the very end made me suspect finalizers
15:40:25evanpossible, yes.
15:40:39evani'll keep an eye out.
15:40:42brixenk
15:40:50evani've fixed the return inside EM bug
15:41:04evanthough, EM raises an exception about an error now
15:41:08evanso i'm tracking that down.
15:41:12jakedouglasyo
15:41:28brixensup jakedouglas
15:42:12jakedouglasheh i decided i would finally write that spec so i checked out rubinius last night. im a little confused about the spec though
15:43:54jakedouglasi was looking at last night before bed. let me look at it again and see if i can come up with an intelligible question.
15:44:25dbussinkbrixen: hmm, friend of mine creates dynamic pack patterns like xNXNX... etc
15:44:36dbussinkbrixen: for extracting stuff from a png file
15:44:48dbussinki have no idea how well that would work with your changes :P
15:45:01dbussinkjakedouglas: which spec?
15:45:08jakedouglasrb_rescue spec
15:45:11evandbussink: it will work fine
15:45:28evandbussink: but feel free to get a crazy pattern from your friend and we'll bench it.
15:45:33jakedouglasi remember the problem now. im just trying to see the best way to solve
15:46:14jakedouglasok so
15:47:01brixendbussink: it won't yet, because I haven't done xX so the prim will fail
15:47:09brixendbussink: but I was planning on doing xX today :)
15:47:10evani'm going to go jump in the shower
15:47:11evanbbiab.
15:47:27dbussinkbrixen: ah ok, cool :)
15:47:32jakedouglasthe rb_rescue spec doesn't cover that the caught exception should be passed to the raise func in addition to the user supplied arg.
15:47:35dbussinkhe has some benchmarks too, so i can run those then
15:47:46brixendbussink: sounds good
15:49:32jakedouglasdoes sometime have time to look at it with me and find a good solution?
15:51:04jakedouglaswell. maybe i can do it.
15:51:10jakedouglasi believe in myself
15:51:21brixenjakedouglas: that's the spirit!
15:51:26brixenI believe in you too
15:51:52jakedouglasgee, thanks :)
15:52:28brixenwe're always here for moral support!
15:53:29cremesbrixen: your pack benches are looking incredible
15:54:02brixenaww shucks guys, it's just some C++ :)
15:54:28brixencremes: I just pushed that code to rapa
15:55:05brixencremes: I'm going to work on some string ones today, and @xX
15:55:16cremesi see that... i am still working on E
15:55:38cremesi'll use your latest push to fill in some of my knowledge gaps on some ragel issues
15:55:55brixencremes: so, here's what I try to do: at the action level, keep things super simple, at the bottom, keep things super simple, the complexity is parameterized in the middle
15:56:23brixenrationale: I want to say, "what does 'Q' do" and have a simple answer at the action
15:56:35brixenand I want the lowest level stuff to be clear and maintainable
15:56:52brixenlooking at MRI pack code gets me rather cross-eyed pretty quickly
15:57:00cremesright... me too
15:57:28cremesit's that complex middle that i was having uber-trouble with but now you've shown me the way :)
15:57:53brixenalso, I adjusted the ragel output from G2 to G1 because pack.cpp was 5kloc and taking 30sec to compile
15:58:03brixenG1 appears to be as fast so far
15:58:13brixenbut we can tweak these things once it's all in
15:58:20cremesyeah, the machine types are something to check when it's all done
16:00:04cremesbrixen: for E, i think i'll probably need a CONVERT_TO_DOUBLE macro in the style you've shown
16:00:06cremeswe'll see
16:01:14brixencremes: sure, play with it and see what works
16:01:25cremesroger
16:01:53brixenmy whole reason for this approach is that the code is quite declarative
16:02:00brixenrather than a nest of conditionals
16:02:12brixenso use what makes it clear
16:02:50brixenevan: :/ http://gist.github.com/475614
16:03:32brixenevan: that's an ubuntu 9.10 64bit vbox
16:07:22cremesbrixen: how do i get my local rbx to pick up the new pack.cpp and unpack.cpp files after i generate them in the vm directory?
16:07:29cremesdo i run rake again in my rbx dir?
16:07:33brixenyeah
16:07:37cremesk
16:07:37brixenrake build or rake
16:11:40brixenevan: and on elle http://gist.github.com/475623
16:13:15boyscoutAdded configure check for endianness. - 79a2076 - Brian Ford
16:13:15boyscoutAdded configure check for sizeof(long). - f29f8fd - Brian Ford
16:13:15boyscoutAdded Bignum::verify_size. - 9a720a5 - Brian Ford
16:13:15boyscoutArray#pack directives SsIiLlNnQqVv. - b7d7f9b - Brian Ford
16:13:15boyscoutAdded benchmark for pack with SILNQV. - 9686951 - Brian Ford
16:16:05cremesanyone else having trouble cloning rubyspec? http://gist.github.com/475633
16:16:54brixenhmm
16:17:56brixencremes: I just cloned it fine
16:18:14brixencremes: I used git://github.com
16:24:07cremesusing git://github worked
16:24:37brixencool
16:25:33boyscoutCI: rubinius: 9686951 successful: 3500 files, 14307 examples, 42066 expectations, 0 failures, 0 errors
16:56:24evanbrixen: question
16:56:34evanlambda { }.should_not raise_error(Blah)
16:56:49evandoesn't fail if the block happens to raise a different exception
16:56:54evanand it swallows that exception silently
16:56:58evanshouldn't it reraise it?
16:57:21evanso that mspec can see an exception bubbled out and the exception has an error
16:57:34evanspent 10 minutes wondering why my code wasn't failing
16:57:40evanit was because i had an NoMethodError
16:57:46evanbut raise_error ate it.
17:03:46brixenhm, yeah it should let it bubble out
17:04:50brixenactually, I thought it did
17:05:04evandoesn't appear to
17:05:07evani'll check the code.
17:05:10brixenevan: marcandre just patched this
17:05:13brixenle'me look
17:05:22brixenevan: are you on head?
17:05:28evanshould be
17:05:32brixenhm
17:05:34evanso yeah
17:05:38evanit doesn't reraise it
17:05:50evanmatches? in raise_error.rb swallows all Exceptions
17:06:02evanand just returns false if the thing being raised wasn't the matching exception
17:06:12evanit should probably reraise
17:08:18brixenhm, rspec appears to swallow it too
17:08:23brixenthat's probably why I did
17:08:48evanit's easy to get false positives
17:08:53evanis my issue
17:09:07brixenwell, why is it using should_not raise_error() ?
17:09:17evanit's like answering "nope, the phone didn't ring, but the earth was destroyed. thats fine, right?"
17:09:23brixenheh, yep
17:09:33brixencan I see the spec?
17:09:39evani'm about to commit it.
17:10:40brixenif you use raise_error() with no class, you get the exception that was raised
17:10:47brixenI think the behavior is correct
17:11:22brixenshould_not raise_error(ThePhoneRangError) should be silent about TheEarthWasDestroyedError
17:11:24evanperhaps it's because I used it with should_not?
17:11:28brixenno
17:11:35evanreally? why silent about that?
17:11:41brixendid you give raise_error() an exception class?
17:11:47evanyeah
17:11:50brixenwhy?
17:11:50evanLocalJumpError
17:12:05evanbecause it seemed right to be specific
17:12:14brixenso, that's saying no LocalJumpErrors here, but anything else is ok
17:12:29evanok
17:12:31evanthats fine
17:12:31brixenshould_not raise_error() will fail if any error is raised
17:12:38evanI end up writing the spec
17:12:45evanthen putting the lambda {}.should_not around it
17:12:55brixenyeah, that happens a lot
17:12:57evanso that I can see i'm writing the spec properly
17:13:11evansince i screwed up to begin with
17:13:21evanbut the .should_not raise_error didn't let me see that.
17:13:25brixenI prefer the ScratchPad annotated flow on these
17:13:45evanrather than checking for LocalJumpError?
17:13:49evanyeah, thats probably a better way.
17:14:09marcandrebrixen: hi! I remember only changing the error message, not the logic behind the matcher. Or did I?
17:14:21brixenmarcandre: nope, you're fine
17:14:28brixenmarcandre: it was just jogging my memory
17:14:37brixencus I just sync'd mspec in rubinius
17:14:43marcandrek.
17:14:51evani wasn't saying it was wrong
17:14:56evanjust curious about the semantics
17:14:58evanand the thinking.
17:15:51brixenit is subtle
17:16:19brixenhonestly, I think I'd have a fit if someone wrote a spec that allowed execeptions *except* for a certain one
17:16:26brixenI don't see the use case
17:16:34brixenmaybe someone can enlighten me :)
17:16:42evanwell, thats part of the issue
17:16:58evanthese specs will pass if any other exception is raised
17:17:09evanwhich seems like a false positive
17:17:15marcandreevan: FWIW, I'm surprised too that it swallows other exceptions, not sure that's the way it should be. I'd be curious to run the full specs without swallowing and see if any spec is badly written.
17:17:20brixenwell, raise_error() does not allow that
17:17:35brixenbut again, this is an rspec semantic
17:17:40evanright
17:17:43brixenand I would bet money someone uses that
17:17:47evanI can see arguments both ways
17:17:49brixenI hope I never work with their code
17:18:37brixenmarcandre: just grep for should_not raise_error([^)]+)
17:19:38dbussinkthunderstorm time!
17:19:46cremesbrixen: ready to cry uncle on pack 'E'
17:20:09evanbrixen: i'm changing my spec to use the ScratchPad method
17:20:15cremesafter chasing this rabbit down the hole, it looks like it needs some ruby primitive support
17:20:18evanScratchPad.record erases whatever is there, yes?
17:20:34cremessomething like a :to_float (for 'e') and :to_double (for 'E')
17:21:14cremesand then all of the Float.to_packed stuff will need to get ripped out (only used by pack)
17:21:36brixenevan: yes
17:21:37cremesi'm afraid its a bit beyond me :(
17:22:01cremessorry to heap more work on your plate... i was hoping to take some off
17:22:05boyscoutHandle block arguments to a lambda specially. Fixes #398. - b359b73 - Evan Phoenix
17:22:05boyscoutHandle #inspect calling #to_s in the right cases. Fixes #405 - 440d929 - Evan Phoenix
17:22:05boyscoutDeal with Fixnum and Symbol speciallize in #methods. Fixes #403 - a51a739 - Evan Phoenix
17:22:05boyscoutAdd spec for long-return-from-saved-block case - 98ebf2a - Evan Phoenix
17:22:05boyscoutTest the proper scope when determining if long return is possible - 5fefabc - Evan Phoenix
17:22:05brixencremes: well, do you have good specs?
17:22:22brixencremes: le'me take a look at it
17:22:33cremesi have the hole in the donut
17:22:38brixencremes: sometimes it takes a bit to gel, hence why I work on a chunk at a time
17:22:44brixencremes: haha
17:23:16evancremes: so, your cremes account on github has commit privs
17:23:24evando you want chuckremes to have privs as well?
17:23:28cremesno need for you to look at it now if you have other things cooking; i can get lunch and jump back to my dayjob
17:23:29evani only see you using cremes
17:23:58cremesevan: yes, please... i accidentally created 2 github accounts... i really only use the chuckremes one
17:24:06evank
17:24:34evanok, i removed cremes
17:24:37evanand added chuckremes
17:24:42cremescoolio
17:25:03brixencremes: I'm working on some specs atm, I'll take a stab at fixing the 'E' specs then look at it
17:25:18cremesbrixen: okay, time for lunch
17:25:22brixenk
17:25:33evanif we're doing pack in a primitive
17:25:35brixenevan: did you see my gists?
17:25:37evanthere is no need for more Float stuff
17:25:44brixenevan: yeah
17:25:51evanthe primitive can cast the double to a float and cast that to a C*
17:25:58brixenyep
17:25:58evansince i think the format is IEEE?
17:26:09evanwhich gist?
17:26:32cremesi was looking to mimic the pack::int stuff which calls :pack_to_int
17:26:43brixenhttp://gist.github.com/475614
17:26:49cremesby doing a pack::float to call :pack_to_float and the same for double
17:27:08evanbrixen: ug.
17:27:09evan*shrug*
17:27:10cremesperhaps i was going in the wrong direction.
17:27:13brixencremes: you mean to coerce, yeah
17:27:18cremesexactly
17:27:24brixenyeah, we'll need that
17:27:30brixenbut what you get back is a Float
17:27:35brixenwhich just has a double in it
17:27:41brixenthat's what you pack
17:28:05evanbrixen: the .rl files are only in rapa, right?
17:28:10brixen#pack_to_float isn't a primitive, it's just rubyland call to the coerce logic
17:28:14brixenevan: yeah
17:28:27cremesokay, but pack_to_float doesn't exist yet
17:28:47brixencremes: right
17:28:54brixenevan: this is what I get in os x http://gist.github.com/475712
17:29:04evanare you only calling pack::integer when the thing isn't already an Integer?
17:29:13brixenyes
17:29:14evanie, are you using kind_of<Integer> first?
17:29:24evanok
17:29:27cremesthat's why i'm saying its beyond my capability right now... it seems to touch on a lot of other internal rbx stuff with which i have no familiarity
17:29:41evancremes: not really.
17:29:57cremesno?
17:29:58evanpack_to_float is just a ruby method you writing that calls FloatValue and checks the thing is a Float
17:30:05evanit's not rubinius internals at all.
17:30:36cremeshmmmm, all right
17:30:37evanbrixen: are you getting this malloc stuff everytime?
17:31:14brixenevan: I'm running again now
17:31:19evank
17:31:22brixenseem to, yes
17:31:48brixenbut not always the same number of errors
17:31:55brixenI'll try in gdb
17:32:40boyscoutCI: rubinius: 6a04993 successful: 3500 files, 14308 examples, 42068 expectations, 0 failures, 0 errors
17:33:35evanyah
17:33:36evanplease do.
17:37:41brixenevan: http://github.com/brixen/rapa/blob/master/actions/rubinius/pack_code.rl#L48-59
17:37:51evanyep
17:37:53evani was going through there
17:37:53brixenevan: you want to check I'm not doing anything bad GC-wise
17:38:02evanyou've got quite the macro soup!
17:39:01evanseems fine
17:39:20evanso long as you don't access a Bignum on both sides of a call to coerce
17:39:22evanit doesn't appear you do.
17:39:33brixenhmm, bad connection
17:40:11brixenyeah, the coerce call is the only place calling back into Ruby
17:40:34evanand it appears that self is the only thing on both sides of that
17:40:37brixenand teh new ref is assigned and used
17:40:38evanwhich is protected with OnStack<>
17:40:44brixenyeah
17:40:58brixenat least, that's the way I planned it :)
17:41:23evan:)
17:41:39jakedouglashow do i diagnose the spec run spontaneously terminating
17:41:56brixenjakedouglas: run under gdb
17:42:34brixensomething like gdb --args vm/vm mspec/bin/mspec-ci <path/to/specs>
17:42:42jakedouglasok
17:43:33jakedouglasProgram received signal SIGTRAP, Trace/breakpoint trap.
17:43:33jakedouglas0x00007fff5fc01028 in __dyld__dyld_start ()
17:44:38evan:/
17:44:42evancontinue past that.
17:44:58brixenevan: http://gist.github.com/475734
17:44:59evanbin/mspec --gdb is the better way
17:45:00evanbtw.
17:45:10brixenI'm in run_all_finalizers, what should I poke?
17:45:24evanwell
17:45:30jakedouglasi just get assloads of failures when i continue
17:45:59jakedouglas(or when i run bin/mspec --gdb)
17:46:00evanbrixen: you should probably build objectmemory.cpp and builtin/data.cpp in DEV=1 mode
17:46:08evanbecause we can't see what finalizer is actually calling free.
17:46:17evanthis might be related to the -1 change.
17:46:19brixenk
17:46:22evanis my guess.
17:46:25brixenhm
17:46:50evanjakedouglas: umm..
17:46:53evani'm not sure.
17:46:59jakedouglasi did find my problem, though, by only running the 1 spec i needed
17:47:07jakedouglasunclear why it was exploding trying to run all of them
17:47:09evanthats what we meante
17:47:14evanmeant
17:47:16evani dunno.
17:47:21jakedouglasoh. heh. i just tried running them all for fun first
17:47:26evanno no
17:47:31evanjust the one.
17:47:34jakedouglasgot it :)
17:47:44evanotherwise you'll get all the Process specs and such
17:47:51evanwhich are a real pain to run under gdb
17:48:03evanwhich might have been the source of your "assload" of failures.
17:48:11jakedouglask
17:49:58brixenI think I need to fix bin/mspec --gdb
17:50:13brixenit does not do the same thing as gdb --args ...
17:50:32brixenand all the argf specs fail while running
17:51:57evani only use it strictively
17:52:00evanrestrictively
17:52:00evanrather.
17:55:12brixenthat's reasonable
17:55:21brixenin this case, I want it all to run
17:55:41brixenevan: so, what am I looking for in the finalizer code?
17:57:04evanlet it run and crash again
17:57:06evanget a new bt
17:58:22brixenbt is essentially the same
17:59:19brixenhm, trying to use rp causes more exceptions
18:00:27evanit shouldn't be
18:00:39evandid you recompile with DEV=1 for tohse files?
18:01:12evanmaybe try all with DEV=1
18:01:22evanwe need to know which finalizer is being called
18:01:31evanfrom line 642 of objectmemory.cpp
18:01:41brixenyeah, DEV=1 for those files
18:01:57jakedouglascould someone review this please http://gist.github.com/475761
18:02:27brixenrp fi.object uses a std::string and causes another malloc error
18:03:29evanyou want to
18:03:31evanp fi.finalizer.
18:05:03brixenrubinius::Pointer::finalize
18:05:48evanok
18:05:59evani think i've seen this
18:06:02evanfor now
18:06:11evango ahead and comment out running finalizers on shutdown
18:06:14evanthats new code anyway
18:07:50evanfor some reason, we're free'ing some FFI Pointers twice.
18:13:28brixenevan: did you want me to commit that?
18:13:33evansure
18:13:36brixenok
18:13:36evanno harm for now.
18:13:43evanfinalizers on shutdown is a nicity only.
18:23:25boyscoutDisallow platform size modifier for pack NnQqVv. - e8174a5 - Brian Ford
18:23:25boyscoutTemporarily disable running finalizers at exit. - 61502e1 - Brian Ford
18:31:58boyscoutCI: rubinius: 61502e1 successful: 3500 files, 14320 examples, 42080 expectations, 0 failures, 0 errors
18:34:25jakedouglaswhat should I do with my patch? can i just commit it or should i post it to the issue tracker? i understand you might not have time to review it right now
18:34:44brixenhm
18:34:48brixenlooks
18:34:57brixenjakedouglas: sorry, got distracted
18:35:01jakedouglasnp
18:35:16jakedouglasalso, are the capi specs part of rubyspec? does it need to be committed to rubyspec or can i just commit it to the rbx repo?
18:37:05brixenthey are part of rubyspec, yes, but I sync them over
18:37:09brixenso you can just commit to rbx
18:37:44jakedouglasok. someone yanked my commit bit on rubyspec sometime after you added it a long time ago. i dont care thoiugh, ill just commit to rbx
18:38:04evanjakedouglas: we pruned the bits at some point, yeah.
18:38:13evanspring cleaning.
18:38:20jakedouglasword
18:38:28brixenjakedouglas: I prune the rubyspec commit bits so I can stay on top of what is being committed
18:38:43brixenjakedouglas: I'll gladly add you back
18:38:50jakedouglasdont bother for now
18:38:54brixenk
18:39:39jakedouglasdoes the patch look ok?
18:39:52brixenjakedouglas: in the kernel_specs_call_proc_... why not just pass the two args directly?
18:40:04brixenrather than in an array, then pull them out, etc
18:40:44brixenie (VALUE proc, VALUE arg, VALUE raised_exc)
18:41:23jakedouglaswell
18:41:28jakedouglasthen i would need more procs
18:41:51jakedouglasone that took 1 arg, one that took 2 args and returned arg1, and another that took 2 args and returned arg2
18:42:15brixenhm
18:42:15jakedouglasoh
18:42:17jakedouglasi see what you mean
18:42:31jakedouglassorry i misunderstood
18:42:38brixenthat's ok, so did I :)
18:42:48brixensees lots of head scratching
18:42:52jakedouglasyou're talking about the arguments to kernel_spec_call_proc_with_raised_exc
18:42:55brixenyeah
18:43:10jakedouglasbecause thats what gets called by rb_rescue when it 'rescues'
18:43:16jakedouglasso it can only take 1 user supplied argument
18:43:20brixenok
18:43:34brixenit is all rather convoluted, thanks MRI!
18:43:43jakedouglasindeed
18:44:26brixenok, I see
18:44:28jaribsome Process specs failing for me on linux http://gist.github.com/475838
18:44:46brixenjarib: please try rake distclean
18:44:50jaribk
18:44:58brixenjakedouglas: looks ok to me
18:45:08jakedouglasok
18:45:52jakedouglasthe issue was just that the spec wasn't checking for the rescued exception getting passed to the raise func as the second arg
18:46:12jakedouglasalso the other specs were a little off as far as what was being tested imo
18:46:17jakedouglasso i 'improved' them
18:47:46brixencool
18:48:04jakedouglasill commit it. thanks for checking.
18:48:41brixenok, thanks for fixing it!
18:48:56jakedouglasheh. my spec conscience is now clear.
18:51:07boyscoutImprove capi specs for rb_rescue - 9191de6 - Jake Douglas
18:51:14jakedouglasyou guys going to jvm langs?
18:51:32evannope
18:51:45brixenjakedouglas: i'll be at oscon/emerging langs
18:52:15jakedouglascool. i wont make it down to oscon :(
18:52:22brixenbummer
18:53:06jakedouglasany low-hanging fruit in the rubinius world?
18:53:36brixenhmm, yes
18:53:44brixennow, if we only knew what it was :)
18:53:47jakedouglas:)
18:53:51brixenrun your code
18:53:54brixenprofile your code
18:53:57brixenbenchmark your code
18:54:04brixencuddle with your code :)
18:55:05brixensince we don't get out much, other people's code is the best data for us
18:55:31jakedouglastrue
18:55:54evanbrixen: i've hit upon a flaw with my debugging strategy.
18:56:10brixenoh?
18:56:24evanyou can't set breakpoints in methods that are currently running and get those breakpoints
18:56:35evanyou can get them in the method is run again after you set it
18:56:49evanbut because the method is already running, and not using the debugging interpreter, it doesn't see the breakpoints.
18:56:52brixenahh hm
18:56:56brixenyeah
18:57:19evani've got an idea to solve it, but it requires putting some code in the fast path
18:57:39evancan't think of a way to do it otherwise
18:57:53evanbasically, after a send returns, we'd have to do
18:57:59evanif(vmm->debugging) { ... }
18:58:07evanit would be just a flag, so it should be ok.
18:58:24evanthen i'll have a debugging interpreter like the uncommon interpreter
18:58:35evanthat can start where another interpreter left off
18:58:37evanso
18:59:06evanif(vmm->debugging) { return VMMethod::continue_debugging(state, call_frame, ...); }
18:59:06jakedouglastries to load the big rails app with rbx
18:59:33brixenmakes sense
18:59:41boyscoutCI: rubinius: 9191de6 successful: 3500 files, 14322 examples, 42084 expectations, 0 failures, 0 errors
18:59:51brixenjakedouglas: make sure the fire extinguishers are nearby :)
19:00:02jakedouglasindeed
19:00:14jakedouglasi tried it a little while back and ran into something funky right away. let me see what happens.
19:00:56jaribbrixen: thanks, distclean worked. why is that?
19:01:16brixenjarib: I'm thinking something in libtommath
19:01:23brixenbut I don't know exactly
19:01:31jaribok
19:02:02brixenoh wait, no
19:02:04brixenlibffi
19:02:19brixenthe external libs are not rebuilt properly
19:02:29brixenwhich we will fix with the new build system
19:03:07brixenjarib: git show 74c1dce5
19:03:44jaribah, i see
19:18:52jakedouglasis there anywhere listing gem compatibility with rbx?
19:19:02brixennot yet
19:19:26brixenbut we fervently hope someone will start a website :)
19:19:30jakedouglaswell
19:20:35jakedouglaswhoever had the idea to start isitjruby was very silly to go and build another impl-specific site instead of making a generic one
19:21:32brixenisitjruby.com runs on joyent
19:21:35brixenthat was the first mistake
19:21:39jakedouglasdo you guys get many complains that C gems fail to build because the build flags are different than they would be with MRI?
19:21:45jakedouglasthat seems to be the cause of my current failure
19:21:53brixenhm, haven't seen that, no
19:22:06jakedouglasjson 1.1.9
19:22:15brixenour rbconfig.rb is hand crafted
19:22:23jakedouglasoh
19:22:24brixenrather than slurped in from autoconf
19:22:30brixenso we probably have holes
19:22:42jakedouglashttp://gist.github.com/475900
19:23:08brixenjakedouglas: do you know any of the brightbox guys? maybe they would run isitrubinius
19:23:25jakedouglasnever heard of brightbox until now.
19:23:54jakedouglasi dont support isit<someimpl>. it should just be built into gemcutter or something
19:24:12jakedouglasso i dont have to go to a different website to look at stuff
19:24:21jakedouglasand so people dont have to maintain N sites
19:24:32brixenyeah
19:24:38evanjson is it's own screwup
19:24:47evanthey're build setup is wrong
19:24:54evanuse github.com/evanphx/json
19:25:09brixenman, the situation with json is just agonizing
19:25:19brixenway to release a popular gem and then disappear
19:25:25evanthe maintainer is basically gone.
19:25:28brixenyeah
19:25:39jakedouglasi see
19:25:45brixenit hits everyone with a rails app
19:25:59brixenwell, in the past 2 years, since JSON became the new YAML
19:26:32brixenevan: hurry, start a new representation meme and release a gem!
19:26:41brixeneveryone will upgrade their rails apps to use it instead of json
19:27:21evani've sent a plee to twitter about flori
19:27:26evanwe'll see if that helps.
19:30:17evanbrixen: hahahah
19:30:26evanmy if(vmm->debugging) thing worked first time.
19:30:27evanlove it.
19:30:31evani've earned lunch!
19:30:33evanand a movie!
19:30:35evanbbiab.
19:34:26brixenwoot!
19:40:39jakedouglaswhy would i get these instruction output during runtime unless its crashing
19:41:01jakedouglas 0: passed_arg 1, 2: goto_if_true 10, etc
19:41:33jakedouglas(it appeared to continue running after displaying this)
19:42:45brixenjakedouglas: what is that?
19:43:00jakedouglasits rbx spewing at me :p
19:43:03brixenare you installing a gem?
19:43:06jakedouglasyes
19:43:10brixenI know what the output is
19:43:17brixenwhat gem?
19:43:40brixenhas a hunch
19:44:12jakedouglasi attempted to use a newer version of the json gem to avoid having to download and build evans
19:45:09jakedouglasif i have to use evan's thats fine, just wanted to give it a shot
19:45:53brixenit is likely the json bin script prettify_json.rb
19:46:01brixenrun rbx compile on that
19:46:05brixenalso, look at the code :P
19:46:15jakedouglasim skared now
19:46:26brixenit's a prefect example of why rbx should have a "nuke from orbit" switch
19:46:35brixener perfect rather
19:48:45brixenbtw, you won't use prettify_json in normal use, so the gem should work fine
19:49:12jakedouglask
19:54:34jakedouglashow about libxml-ruby?
19:55:06dbussinkthat's pretty outdated
19:55:13dbussinkjakedouglas: not maintained for a while too afaik
19:55:18jakedouglasis there a compatible replacement?
19:55:23dbussinki'd suggest switching to nokogiri
19:55:23brixenjakedouglas: it needs a patch
19:55:28brixenyeah, try noko
19:55:37jakedouglaswill noko work drop-in?
19:55:55brixendunno
19:56:03dbussinknot that i know, but i've also heard about problems in mri with libxml-ruby
19:56:09jakedouglasi mean, does it replicate the api of libxml-ruby?
19:56:10jakedouglasoh.
19:56:18dbussinkso i'd try ditching libxml-ruby in general :)
19:56:25dbussinkno, it has it's own api
19:56:35jakedouglasyea i mean this is just from old code, i wish it was as easy as 'switching' heh
20:01:20jakedouglasnot all companies allocate time to do things the right way :/
20:04:26dbussinkwell, part of running things is keeping things a bit up to date :)
20:04:42jakedouglastrust me, i don't disagree with you
20:04:43jakedouglasheh
20:05:11jakedouglasInstalling soap4r (1.5.8) from rubygems repository at http://ec2-us-east-mirror.rightscale.com/rubygems/archive/20100513/ rbx: Precompiling 366 files...
20:05:11jakedouglasAssertion failed: (idx < DATA_MAX), function var_table_add, file var_table.cpp, line 86.
20:05:25dbussinknah, i guess it's more that i would go crazy in those cases
20:05:33dbussinkjakedouglas: hmm, what rubinius version do you have?
20:05:40jakedouglasrvm install rbx-head
20:05:48dbussinksince that looks like an error fixed long ago
20:05:56jakedouglasinstalled today.
20:06:55jakedouglasbut that must be wrong
20:07:04jakedouglasbecause my copy of var_table.cpp doesn't even have a line 86
20:07:16dbussinkmine neither
20:07:24dbussinkand i remember fixing that exact issue :)
20:07:43dbussinkdid you already have a rbx-head installed through rvm?
20:07:43jakedouglasi ran it again and it seems to have continued fine
20:07:58jakedouglasprobably. does i need to remove and install again?
20:08:02dbussinkyeah
20:08:08jakedouglasi see.
20:08:09dbussinkrvm doesn't reinstall properly
20:08:23jakedouglasokay
20:09:17wayneeseguindbussink: you can 'rvm remove rbx-head ; rvm install rbx-head' not 'optimal' but will work
20:09:39dbussinkwayneeseguin: that's what i meant (not reinstalling rvm completely yeah)
20:09:46dbussinkwayneeseguin: any idea why that's happening?
20:10:47dbussinkevan: nicksieger is also calling for fixing json gem issues i see (making it a multiple platform gem)
20:24:43jakedouglasany way to change the build process to make it use more than 1 core?
20:25:36dbussinkdunno if that would be easy
20:28:45jakedouglasoh. well it sure would build a lot faster :)
20:30:55dbussinkdunno if rake has a parallel task capability though
20:31:14DefilerIt does
20:31:17DefilerIt just isn't any good
20:31:45Defilerhttp://rake.rubyforge.org/classes/Rake/MultiTask.html
20:31:49dbussinkdoes mri allow other threads to run while it's shelling out something?
20:31:56Defilerno
20:32:06dbussinkok, so that defeats the purpose then
20:32:07Defilerat least not 1.8, don't know about 1.9
20:32:09Defileryeah
20:32:26radarekmri 1.9 has GIL
20:32:28DefilerIt's useful if your work is all in ruby I guess though
20:32:51Defileryeah but in 1.9 you can declare that your native code doesn't need the lock
20:33:03Defilerand I was wondering if 1.9 did that internally for 'system' and ``
20:33:16Defileranswer is probably no, though
20:33:17dbussinkhaven't tried that
20:34:22radarekDefiler: you mean rb_thread_blocking_region?
20:35:43Defileryes
20:37:31radarekDefiler: looking at MRI src there are no many usage of that function
20:37:56Defileryeah, so I see
20:38:01Defileranswers that question, I guess
20:38:09wayneeseguindbussink: Sutto is looking into it, I haven't had a chance myself yet
20:39:50jakedouglas1.8 appears to run other threads while shelling out, unless my test is dumb
20:40:03jakedouglashowever, i have an rbx explosion
20:40:04jakedouglashttp://gist.github.com/476030
20:41:48jakedouglasbut it works from within gdb :p
20:42:13Defilerhttp://gist.github.com/476035
20:42:16Defilertry running taht
20:42:26Defilerprints '1' for me, meaning that the thread blocked while system was running
20:44:29jakedouglasah. true then
20:44:47jakedouglasAssertion failed: (errorcode == 0), function setInstance, file ThreadLocal.cpp, line 61.
20:45:30jakedouglasi think my new rbx install is just completely fucked for some reason.
20:45:42jakedouglastries again
20:46:31jaribDefiler: why would that mean the thread blocked? that code would never print more than 1
20:46:46jaribdid you forget a loop { } ?
20:47:20Defileruhh yes I did hehe
20:47:23Defilersorry, not much sleep
20:47:56jaribprints 10 here, with the loop :)
20:48:01Defilerwith a loop it prints 10, yeah
20:48:02Defilerinteresting
20:48:05jakedouglasah. hurray for people that actually read the code.
20:48:27DefilerI'll have to dive into that code and figure out how
20:55:00yipdwso, maybe this is just really dense, but system doesn't start up a new thread -- it forks the ruby process
20:55:07yipdwso perhaps thread-blocking doesn't enter at all?
20:56:22dbussinkyipdw: well, the question is whether the process that does the fork unlocks the interpreter or not
20:56:58yipdwoh ok
21:01:02dbussinkbut from those results from Defiler and jarib it looks like it does
21:03:36brixenjakedouglas: did you try libxml with tmm1's patch? http://github.com/cfis/libxml-ruby/issues#issue/2
21:04:03jakedouglasbrixen: no. im just trying to get rbx running with my rvm build, it was exploding for some reason.
21:04:07brixendiscovers this after forking to submit the same patch
21:04:31brixenjakedouglas: you should just clone; configure; rake rbx
21:04:44brixenyou don't have to install it to run
21:05:05jakedouglashow do i make it work nice with all the script/foo
21:05:30brixenhm, well, you are a difficult one, huh? :P
21:05:50brixencan you exec the script directly with rbx path/to/script/foo ?
21:06:22brixenfor rvm, did you rvm remove, rvm install ?
21:07:37dbussinkjakedouglas: did you reinstall gems after rvm remove / rvm install?
21:08:33dbussinkbecause you might have some gems compiled with the older rbx version then
21:08:43jakedouglasalmost guarantee you there will be some wonky shit somewhere in the code that will go and try to run other stuff that will need ruby to be rbx
21:08:45wayneeseguinrvm remove/install doesn't touch gems
21:08:48wayneeseguinFYI
21:08:53jakedouglaswayneeseguin: rake?
21:09:08wayneeseguinyou'd have to do 'rvm remove --gems rbx' to remove gems for rbx with it
21:09:10jakedouglasit seg faulted on me when the rvm install was tiryng to install rake
21:09:15jakedouglasoh
21:09:25wayneeseguinI'm only speaking for RVM ;)
21:09:31wayneeseguinMy family is waiting for me I'll be back later
21:11:20brixenbegins work on a ragel state machine to explain the inner workings of rvm :)
21:13:09jakedouglasgoes to take a shower while rbx builds
21:14:56jakedouglasoh. looks like it worked this time.
21:15:11jakedouglas Tried to use object of type String (53) as type Array (6) (TypeError)
21:15:14jakedouglaswhy am i getting stuff like that
21:15:52jakedouglasthe precompiled stuff is different or something?
21:16:26dbussinkjakedouglas: stuff probably changed in the mean time
21:16:35jakedouglasok. so i delete the .compiled.rbc file
21:16:38dbussinkjakedouglas: best is to also start with a clean set of gems
21:16:42jakedouglasand then i get a explosiion again :(
21:17:11jakedouglashttp://gist.github.com/476089
21:17:27brixen.rbc files are not highly combustible, so are unlikely to cause explosions
21:17:45brixenwhat did you run?
21:18:16jakedouglasok i think i jut had another compiled file somewhere that it was loading
21:18:33brixenI mean, to get that segfault?
21:18:43jakedouglasjust some silly bundler script
21:19:16brixenwhich perhaps exec'd gem
21:19:39brixenI really suggest trying a pure rbx clone; build
21:19:48brixenuntil you know something is working
21:19:55jakedouglasit seems to be working fine now
21:20:09jakedouglasinstalling gems
21:20:34brixenok
21:20:55brixensubmits a ticket for rvm --sledgehammer
21:20:56jakedouglas uninitialized stream (IOError)
21:20:58jakedouglas IO(IO::BidirectionalPipe)#sync= at kernel/common/io.rb:1512
21:21:06jakedouglasthis is one i've gotten a number of times
21:21:10jakedouglasthis script uses popen or something
21:21:16brixenhm
21:21:20jakedouglasi've never seen it fail on MRI, happens every other time or so on rbx
21:21:55jakedouglas IO.popen("#{cmd} 2>&1", 'r') do |output|
21:21:55jakedouglas output.sync = true
21:22:12brixenwhere is that code?
21:22:16jakedouglasin the script
21:22:31brixenerm, which script?
21:22:36jakedouglasa script in my app
21:22:41brixenahh
21:23:05brixencould you try to extract a repro? or are those 2 lines it?
21:23:47jakedouglaswell, i could probably figure out exactly what command it's running with popen etc
21:23:54jakedouglasits just some helper for shelling out
21:24:27jakedouglashttps://gist.github.com/5349b5456806044b1393
21:25:51brixenok
21:25:53brixenbbiab..
21:25:58jakedouglaswhat would be helpful?
21:26:27brixenanything that reliably repros it
21:26:30jakedouglask
21:34:37jakedouglaswhy not version the compiled code?
21:44:47jakedouglasTried to use object of type LookupTable (36) as type Module (42)
21:45:04jakedouglasis there any way that could happen without having come from old compiled code? i removed my bundler directory, gem uninstalled everything
21:45:14jakedouglasnot sure where it would be coming from
21:48:39jakedouglasi deleted the .rbc file for the file it was complaining about, same thing
21:48:47jakedouglasERRNO_HASH = Hash[*Errno.constants.map{ |c| [Errno.const_get(c)::Errno, Errno.const_get(c).new.message] }.flatten]
21:48:51jakedouglasthats the line it says is the problem
21:49:13jakedouglasit's from memcached gem
21:53:42brixenjakedouglas: .rbc compiled code is versioned
21:54:01brixenyou would not get a type error from old compiled code
21:54:41brixena type error like that is happening in the vm where some C++ code did not get the type it expected
21:54:54brixenrather than segfaulting like mri, you get an exception :)
21:55:32brixentries this code..
21:57:15brixenok, I've got the exception
22:04:24brixenjakedouglas: it is Errno::Mapping being in the constants table
22:04:33brixenbrb...
22:06:03jakedouglashuh
22:07:37jakedouglasoh, I see.
22:09:09jakedouglasso what's the solution
22:11:59brixenthat code is just plain wrong
22:12:14jakedouglasheh
22:12:19brixenthere is no guarantee that a class/module is the only thing in a constants table
22:12:24jakedouglasof course not
22:12:26brixenvery bad bit of code there
22:12:50jakedouglasso should i just change it because it isnt an rbx problem?
22:12:51brixenit needs to check that it's got a class/module
22:12:59brixenit's not an rbx issue, no
22:13:02jakedouglasyea. k
22:18:45jakedouglasnot found: _ruby_digitmap
22:19:04jakedouglashpricot :(
22:19:21brixenhpricot has a few issues
22:19:35brixenit will not work without some changes
22:19:57jakedouglask
22:19:59brixenruby_digitmap would be easy enough to add
22:20:09brixenbut hpricot has bigger issues
22:20:10jakedouglasyea. are the other ones hard?
22:20:11jakedouglasok.
22:22:13brixenwhose hpricot mirror is the canonical one?
22:22:28jakedouglasno idea.
22:22:32brixenheh
22:25:45jakedouglashttp://github.com/hpricot/hpricot i guess
22:25:51jakedouglashas most recent update
22:26:20brixenok, cool
22:26:31brixenthanks *google* for not knowing that
22:49:33jakedouglasso what are the other issues
22:49:40jakedouglaswith hpricot
22:52:03brixenug, besides the fact that rake gem doesn't even work
22:52:16brixenseriously, who needs Markdown a readme
22:52:20brixen<roll eyes>
22:52:51jakedouglasoh. i guess i dont even care. it looks like someone has disabled the method thats using it in our code.
22:53:38brixenheh, sweet
22:53:45brixenso, this is the install output http://gist.github.com/476218
22:54:01brixenbut I think most of that can be handled by redefining 2 macros
22:54:12brixenit's on my list to look at
22:57:32jakedouglask
22:57:40jakedouglasanyway, trying again now without hpricot.
23:03:30jakedouglasi think i got past the gem load stage. impressive
23:06:56jakedouglashmm
23:07:47evanbrixen: I should try and attack hpricot tomorrow
23:07:54evanmaybe we should just fix it.
23:08:27jakedouglasthe next thing im hitting is
23:08:50jakedouglas(im trying to run the test suite)
23:09:17jakedouglasits loading a migration file for some reason, in the migration for whatever reason the person is doing an Object.send(:remove_const, :SettingInfo)
23:09:34evansounds genius!
23:09:37evan*eyeroll*
23:09:43jakedouglaswell
23:10:19jakedouglasits just to be able to re-run the (2 year old) migration even though the model class is different now. stupid, maybe
23:10:34evananyway
23:10:36evanthat shouldn't be a problem
23:10:39evanare you having one?
23:10:41jakedouglasanyway, the call to remove_const is causing a const_missing and load_missing in active_support
23:10:51evanhm
23:11:04evanmaybe we're running const_missing when we shouldn't
23:11:07jakedouglasand then i get a rails error "Expected /path/to/app/models/some_klass.rb to define SomeKlass"
23:11:12evanin the remove_const case.
23:11:14jakedouglaswhich does indeed define SomeKlass
23:11:44jakedouglasi see
23:12:46evanjakedouglas: one an issue with the backtrace
23:12:48evanand some details
23:12:51evanso I can track and fix it.
23:12:53jakedouglask
23:13:23evanif you want to dig in
23:13:35evanfind out the semantics of const_missing wrt remove_const in MRI
23:13:39jakedouglask.
23:13:43evanand find out if we match it on rbx
23:13:49evanspecs would probably be useful here too.
23:13:54jakedouglasindeed
23:14:16jakedouglasi guess i would find it hard to believe that no one has run into this, but who knows
23:15:21evanyou'd be surprised.
23:18:48jakedouglasyea, ok
23:19:15jakedouglasMRI does not call const_missing when remove_const is called with an undefined constant, rbx does
23:19:48jakedouglasis there a place in the code you can point me to or is it going to be over my head?
23:21:37brixenkernel/common/module.rb:640
23:21:44brixenwrite a spec first :)
23:21:52jakedouglasheh. of course.
23:22:00jakedouglas<evil grin>
23:22:04brixenheh
23:28:21jakedouglasdamn. figuring out how to name my fixture module is going to be harder than writing the spec and the fix.
23:28:33jakedouglassettles in to read 5 paragraphs
23:29:07brixenModuleSpecs::Nonexistent ?
23:29:22brixenor does Nonexistent already exist? :)
23:31:30jakedouglasoh. I was looking at 'constants'
23:31:45jakedouglasConstantSpecs
23:31:50jakedouglasthats what the rest of remove_const_spec uses
23:31:59brixenhmm
23:32:11jakedouglasi assume i should use that?..
23:32:32brixenno, it should be ModuleSpecs
23:32:38brixenbecause the method is on Module
23:32:44jakedouglasok.
23:32:59jakedouglasso are the other ones wrong and need to be fixed? or mine is just special
23:33:27brixenwell, rubyspec is a mess in places... le'me look
23:33:37jakedouglasthanks
23:33:42brixenthe general rule is scope the fixtures to <class>Specs
23:33:49brixenwhich is why you'd use ModuleSpecs
23:33:55brixenbut there are some special cases
23:36:42brixenjakedouglas: go ahead and use ConstantSpecs::Nonexistent
23:37:25jakedouglaswell, now that i think about it, why do i need that at all?
23:39:29jakedouglasim testing that something isn't there. cant i just call Module.send(:remove_const, :Sekret__Mod__That_doeZ_Not_ExIStTTTTT)?
23:40:00brixenyou can call ConstantSpecs.remove_const(:Nonexistent) is what I mean
23:40:07jakedouglasoh. okay
23:40:25brixenfor the ConstantSpecs rationale, see my note at top of spec/ruby/fixtures/constants.rb
23:41:05brixenbut yes, .send(:remove_const ...
23:41:59brixenor class ConstantRemovalFactory.create(:const_remover).new.class_eval { ... }
23:42:04brixenif that is more clear
23:42:18jakedouglas:p
23:42:23brixenheh
23:49:59jakedouglasok. the spec and the fix should be different commits right?
23:51:11brixenyes, please
23:52:09jakedouglasdoes that look ok? http://gist.github.com/476287
23:52:56brixenit "does not call..." and ConstantSpecs.should_not_receive(:const_missing)
23:53:08jakedouglasthanks
23:53:12brixenn/p
23:54:05brixenactually, better would be "it raises a NameError and does not call #const_missing ..."
23:54:24jakedouglasok, so should i just put it into the test above it?
23:54:32jakedouglas(that tests for NameError)
23:54:38brixenyou can leave it together
23:54:46jakedouglasi don't know what you mean
23:55:11brixenthe should_not_receive and the should_raise can be in the same spec
23:55:40brixenjust fix the description to be: it "raises a NameError and does not call #const_missing..."
23:55:43jakedouglasright. there's already a spec that asserts that NameError is raised. should i just put the const_missing part into that?
23:55:53brixenoh, yes
23:55:55jakedouglask
23:59:48jakedouglasoh. so i guess theres some more granularity to this.