[jruby-dev] jruby 1.6.2 1.9 MD5.file() can't accept Pathnames

2 views
Skip to first unread message

Lee Henson

unread,
Jun 24, 2011, 2:05:39 PM6/24/11
to d...@jruby.codehaus.org
Hi

I just fired up a branch new rails 3-1-stable project using jruby 1.6.2 in 1.9 mode. Sprockets is pushing out a "TypeError (can't convert Pathname into String)" when it internally calls digest.file with a Pathname. I cobbled together a quick test under the sprockets test folder like so:

test "pathname can be used by digest" do
  Digest::MD5.file(Pathname.new "/tmp/testfile")
end

And it spits out the following stacktrace:

test "pathname can be used by digest":
TypeError: can't convert Pathname into String
    /src/github/sprockets/test/test_environment.rb:615:in `test "pathname can be used by digest"'
    org/jruby/RubyBasicObject.java:1667:in `__send__'

And that's all you get. Line 1667 is in send19 function of RubyBasicObject:

1663: @JRubyMethod(name = "__send__", compat = RUBY1_9)
1664: public IRubyObject send19(ThreadContext context, IRubyObject arg0, Block block) {
1665:     String name = arg0.asJavaString();
1666: 
1667:     return getMetaClass().finvoke(context, this, name, block);
1668: }

There's no sign of RubyDigest.java, so I'm guessing there's no more info in the stack trace because at this point it's gone into the native md5 implementation? I'm a noob at this jruby lark so I'm not sure what to do next to get this working. Do I need to put some sort of wrapper into jruby with something like this in:

def file(path)
  native.file(path.to_s)
end

?

Cheers
Lee
Reply all
Reply to author
Forward
0 new messages