Re: [jruby-user] JRuby head: splat (i.e., **args) method params?
Josep Blanquer <[email protected]>
| Newsgroups | gmane.comp.lang.jruby.user |
|---|---|
| Message-ID | <CAA_K6Yvg-mnmKzOFK9fL5E5TrTrJASLEgE+sZ+rw=s6Bn8fMgg@mail.gmail.com> |
Great, thanks for the prompt response Thomas.
So, we have just open sourced a lean API framework (
http://eng.rightscale.com/2014/08/22/unveiling_praxis.html) and it is very
much built using ruby 2.1 constructs, and I was trying to see if I could
run some simple apps using jruby-head. In that process I'm finding
incompatibilities (like the initial one about the super kwargs).
Patching that manually got me forward, but here's the next one I found (and
this time I've directly opened an issue):
https://github.com/jruby/jruby/issues/1944
in essence:
ruby-head :005 > Pathname.new("/tmp/foo").find
LocalJumpError: yield called out of block
from
/Users/blanquer/.rvm/rubies/jruby-head/lib/ruby/2.1/pathname.rb:1002:in
`find'
from /Users/blanquer/.rvm/rubies/jruby-head/lib/ruby/2.1/find.rb:47:in
`find'
Does that seem like a legitimate jruby bug?
Josep M.
On Wed, Sep 3, 2014 at 8:30 AM, Thomas E Enebo <[email protected]> wrote:
> 1 week is most likely but this is easily worked around by just changing to
> an explicit super (explicitly pass the args on) for the time being.
>
> -Tom
>
>
> On Wed, Sep 3, 2014 at 10:23 AM, Josep Blanquer <[email protected]>
> wrote:
>
>> Thanks Thomas,
>>
>> Do you have a ballpark sense as to how long something like this might
>> take to be solved? 1 week? 1 month? 6 months?
>>
>> Josep M.
>>
>>
>> On Wed, Sep 3, 2014 at 7:02 AM, Thomas E Enebo <[email protected]>
>> wrote:
>>
>>> Ah yeah. We are not delivering keyword arguments to zsuper. Thanks for
>>> the simple reproduction. I made an issue for it:
>>>
>>> https://github.com/jruby/jruby/issues/1943
>>>
>>> -Tom
>>>
>>>
>>>
>>> On Tue, Sep 2, 2014 at 11:45 PM, Josep Blanquer <[email protected]
>>> > wrote:
>>>
>>>> Aha! intersting...yes I can...so it seems a consequence of the "super"
>>>> method.
>>>> Here you have a repro:
>>>>
>>>> ------------------------------------------------------------
>>>> class Foo
>>>> def initialize(name, context,**opts)
>>>> p opts
>>>> end
>>>> end
>>>>
>>>> class Bar < Foo
>>>> def initialize(name, context, path: nil)
>>>> super
>>>> end
>>>> end
>>>>
>>>> Bar.new(1, 2)
>>>> Bar.new(1,2, path: "there")
>>>> ------------------------------------------------------------
>>>>
>>>> bug:foo $ rvm 2.1
>>>> bug:foo $ ruby /tmp/x.rb
>>>> {:path=>nil}
>>>> {:path=>"there"}
>>>> bug:foo $ rvm jruby-head
>>>> bug:foo $ ruby /tmp/x.rb
>>>> ArgumentError: wrong number of arguments (3 for 2)
>>>> initialize at /tmp/x.rb:9
>>>> initialize at /tmp/x.rb:9
>>>> (root) at /tmp/x.rb:13
>>>>
>>>> while in MRI ruby both calls work (with and without the hash), in jruby
>>>> both fail with the arguments error.
>>>> So, something about the super call doesn't quite work as MRI does.
>>>>
>>>> Cheers,
>>>>
>>>> Josep M.
>>>>
>>>>
>>>> On Tue, Sep 2, 2014 at 3:50 PM, Thomas E Enebo <[email protected]>
>>>> wrote:
>>>>
>>>>> Can you give a more complete example. This works for me:
>>>>>
>>>>> class Foo
>>>>> def initialize(name, context,**opts)
>>>>> p opts
>>>>> end
>>>>> end
>>>>>
>>>>> Foo.new(1, 2, a: 1)
>>>>>
>>>>> ./bin/jruby -v snippets/kw15.rb
>>>>> jruby 9000.dev-SNAPSHOT (2.1.2p142) 2014-09-02 8771d02 Java
>>>>> HotSpot(TM) 64-Bit Server VM 24.60-b09 on 1.7.0_60-b19 [darwin-x86_64]
>>>>> /Users/enebo/work/jruby/lib/ruby/shared/rubygems/defaults/jruby.rb:92
>>>>> warning: Ambiguous first argument; make sure.
>>>>> /Users/enebo/work/jruby/lib/ruby/shared/rubygems/defaults/jruby.rb:96
>>>>> warning: shadowing outer local variable - dir
>>>>> {:a=>1}
>>>>>
>>>>>
>>>>> On Tue, Sep 2, 2014 at 4:52 PM, Josep Blanquer <
>>>>> [email protected]> wrote:
>>>>>
>>>>>> Hello,
>>>>>>
>>>>>> It seems that as of the latest head from today:
>>>>>> jruby 9000.dev-SNAPSHOT (2.1.2p142) 2014-09-02 8771d02 Java
>>>>>> HotSpot(TM) 64-Bit Server VM 24.0-b56 on 1.7.0_40-b43 [darwin-x86_64]
>>>>>>
>>>>>> The following 2.1 syntax is not implemented?
>>>>>>
>>>>>> ArgumentError: wrong number of arguments (3 for 2)
>>>>>> initialize at /...../file.rb:11
>>>>>>
>>>>>> Where that line is:
>>>>>>
>>>>>> def initialize(name, context,**opts)
>>>>>>
>>>>>>
>>>>>> am I missing something to make that happen in the current codebase?
>>>>>> or is this a well know feature that still has to be implemented?
>>>>>>
>>>>>> If the latter is true: do you have any inkling as to when that could
>>>>>> be done?
>>>>>>
>>>>>> Thank you!
>>>>>>
>>>>>> Josep M.
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> blog: http://blog.enebo.com twitter: tom_enebo
>>>>> mail: [email protected]
>>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> blog: http://blog.enebo.com twitter: tom_enebo
>>> mail: [email protected]
>>>
>>
>>
>
>
> --
> blog: http://blog.enebo.com twitter: tom_enebo
> mail: [email protected]
>