Steve Finkelstein created JRUBY-6272:
----------------------------------------

             Summary: Encoding exception running JRuby 1.6.5 (1.8 mode)
                 Key: JRUBY-6272
                 URL: https://jira.codehaus.org/browse/JRUBY-6272
             Project: JRuby
          Issue Type: Bug
    Affects Versions: JRuby 1.6.5
         Environment: RHEL 6.1, x86_64, Tomcat6, RVM, Mongoid
            Reporter: Steve Finkelstein
            Assignee: Thomas E Enebo


I cannot create a MongoDB document (using Mongoid ~> 2.3) with UTF-8 encoding. 
This works if I do it directly through the Mongo shell, but not through JRuby 
on Rails. I cannot replicate this on my OSX environment. It is reproducible on 
RHEL 6.1. I've since recompiled SpiderMonkey with UTF-8 support in addition to 
compiling MongoDB myself and the issue still exists. I'm in Ruby 1.8 mode. 

Code:


jruby-1.6.5 :012 >   hsh = {"id"=>"4ac4efbff964a520a79f20e3", 
"name"=>"Delicatessen", "contact"=>{"phone"=>"2122260211", 
"formattedPhone"=>"(212) 226-0211", "twitter"=>"DeliNYC"}, 
"location"=>{"address"=>"54 Prince St", "crossStreet"=>"at Lafayette St", 
"lat"=>40.723691, "lng"=>-73.99641612, "distance"=>60, "postalCode"=>"10012", 
"city"=>"New York", "state"=>"NY", "country"=>"USA"}, 
"categories"=>[{"id"=>"4bf58dd8d48988d14e941735", "name"=>"American 
Restaurant", "pluralName"=>"American Restaurants", "shortName"=>"American", 
"icon"=>{"prefix"=>"https://foursquare.com/img/categories/food/default_";, 
"sizes"=>[32, 44, 64, 88, 256], "name"=>".png"}, "primary"=>true}], 
"verified"=>true, "stats"=>{"checkinsCount"=>7768, "usersCount"=>5027, 
"tipCount"=>121}, "url"=>"http://www.delicatessennyc.com";, 
"specials"=>[{"id"=>"4df61ab03151247c51b0e9a9", "type"=>"regular", 
"message"=>"One complimentary "Hostess" Dessert Plate (trio of mini desserts, 
house-made cupcake, twinkie, cheesecake lollipop) with purchase of entrée", 
"imageUrls"=>{"count"=>0}, "finePrint"=>"Excludes Weekend Brunch (Sat/Sun 
10:30am-5pm) Unlocked: for checking in 3 times in 7 days", "icon"=>"frequency", 
"title"=>"Loyalty Special", "provider"=>"foursquare", 
"redemption"=>"standard"}], "hereNow"=>{"count"=>3}}


jruby-1.6.5 :013 > FoursquareVenue.create(hsh)
Java::JavaLang::NullPointerException: 
        from org.jruby.exceptions.RaiseException.<init>(RaiseException.java:101)
        from org.jruby.Ruby.newRaiseException(Ruby.java:3348)
        from org.jruby.Ruby.newEncodingCompatibilityError(Ruby.java:3323)
        from org.jruby.RubyString.cat(RubyString.java:1285)
        from org.jruby.RubyString.cat19(RubyString.java:1221)
        from org.jruby.RubyHash$5.visit(RubyHash.java:727)
        from org.jruby.RubyHash.visitAll(RubyHash.java:594)
        from org.jruby.RubyHash.inspectHash(RubyHash.java:721)
        from org.jruby.RubyHash.inspect(RubyHash.java:745)
        from 
org.jruby.RubyHash$i$0$0$inspect.call(RubyHash$i$0$0$inspect.gen:65535)
        from org.jruby.RubyClass.finvoke(RubyClass.java:632)
        from 
org.jruby.javasupport.util.RuntimeHelpers.invoke(RuntimeHelpers.java:545)
        from org.jruby.RubyBasicObject.callMethod(RubyBasicObject.java:353)
        from org.jruby.RubyObject.inspect(RubyObject.java:408)
        from org.jruby.RubyArray.inspectAry(RubyArray.java:1483)
        from org.jruby.RubyArray.inspect(RubyArray.java:1509)
... 420 levels...
        from 
org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75)
        from 
org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:190)
        from 
org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:179)
        from 
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:312)
        from 
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:169)
        from 
usr.local.rvm.rubies.jruby_minus_1_dot_6_dot_5.bin.jirb.__file__(/usr/local/rvm/rubies/jruby-1.6.5/bin/jirb:17)
        from 
usr.local.rvm.rubies.jruby_minus_1_dot_6_dot_5.bin.jirb.load(/usr/local/rvm/rubies/jruby-1.6.5/bin/jirb)
        from org.jruby.Ruby.runScript(Ruby.java:693)
        from org.jruby.Ruby.runScript(Ruby.java:686)
        from org.jruby.Ruby.runNormally(Ruby.java:593)
        from org.jruby.Ruby.runFromMain(Ruby.java:442)
        from org.jruby.Main.doRunFromMain(Main.java:321)
        from org.jruby.Main.internalRun(Main.java:241)
        from org.jruby.Main.run(Main.java:207)
        from org.jruby.Main.run(Main.java:191)
        from org.jruby.Main.main(Main.java:171)jruby-1.6.5 :014 >

Here's the same instance with the culprit characters from the hash modified:


jruby-1.6.5 :017 >   hsh2 = {"id"=>"4ac4efbff964a520a79f20e3", 
"name"=>"Delicatessen", "contact"=>{"phone"=>"2122260211", 
"formattedPhone"=>"(212) 226-0211", "twitter"=>"DeliNYC"}, 
"location"=>{"address"=>"54 Prince St", "crossStreet"=>"at Lafayette St", 
"lat"=>40.723691, "lng"=>-73.99641612, "distance"=>60, "postalCode"=>"10012", 
"city"=>"New York", "state"=>"NY", "country"=>"USA"}, 
"categories"=>[{"id"=>"4bf58dd8d48988d14e941735", "name"=>"American 
Restaurant", "pluralName"=>"American Restaurants", "shortName"=>"American", 
"icon"=>{"prefix"=>"https://foursquare.com/img/categories/food/default_";, 
"sizes"=>[32, 44, 64, 88, 256], "name"=>".png"}, "primary"=>true}], 
"verified"=>true, "stats"=>{"checkinsCount"=>7768, "usersCount"=>5027, 
"tipCount"=>121}, "url"=>"http://www.delicatessennyc.com";, 
"specials"=>[{"id"=>"4df61ab03151247c51b0e9a9", "type"=>"regular", 
"message"=>"One complimentary Hostess Dessert Plate (trio of mini desserts, 
house-made cupcake, twinkie, cheesecake lollipop) with purchase of entree", 
"imageUrls"=>{"count"=>0}, "finePrint"=>"Excludes Weekend Brunch (Sat/Sun 
10:30am-5pm) Unlocked: for checking in 3 times in 7 days", "icon"=>"frequency", 
"title"=>"Loyalty Special", "provider"=>"foursquare", 
"redemption"=>"standard"}], "hereNow"=>{"count"=>3}}


Works as expected:

ruby-1.6.5 :018 > FoursquareVenue.create(hsh2)
 => #<FoursquareVenue _id: 4ac4efbff964a520a79f20e3, _type: nil, version: 2, 
id: nil, name: "Delicatessen", contact: {"phone"=>"2122260211", 
"formattedPhone"=>"(212) 226-0211", "twitter"=>"DeliNYC"}, location: 
{"address"=>"54 Prince St", "crossStreet"=>"at Lafayette St", "lat"=>40.723691, 
"lng"=>-73.99641612, "distance"=>60, "postalCode"=>"10012", "city"=>"New York", 
"state"=>"NY", "country"=>"USA"}, categories: 
[{"id"=>"4bf58dd8d48988d14e941735", "name"=>"American Restaurant", 
"pluralName"=>"American Restaurants", "shortName"=>"American", 
"icon"=>{"prefix"=>"https://foursquare.com/img/categories/food/default_";, 
"sizes"=>[32, 44, 64, 88, 256], "name"=>".png"}, "primary"=>true}], verified: 
true, stats: {"checkinsCount"=>7768, "usersCount"=>5027, "tipCount"=>121}, 
hereNow: {"count"=>3}, url: "http://www.delicatessennyc.com";, specials: 
[{"id"=>"4df61ab03151247c51b0e9a9", "type"=>"regular", "message"=>"One 
complimentary Hostess Dessert Plate (trio of mini desserts, house-made cupcake, 
twinkie, cheesecake lollipop) with purchase of entree", 
"imageUrls"=>{"count"=>0}, "finePrint"=>"Excludes Weekend Brunch (Sat/Sun 
10:30am-5pm) Unlocked: for checking in 3 times in 7 days", "icon"=>"frequency", 
"title"=>"Loyalty Special", "provider"=>"foursquare", 
"redemption"=>"standard"}]> 



--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira



---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to