This project is archived and is in readonly mode.

#2666 ✓committed
Brian Lopez

yajl-ruby as a JSON parsing backend

Reported by Brian Lopez | May 17th, 2009 @ 11:26 PM | in 3.0.2

Add yajl-ruby as one of the JSON parser backends in Rails 3 (and 2.3 once it's back-ported).

This would be especially useful in Rails 3 now that the XML and JSON backends support parsing from an IO as well. The ParamsParser middleware was also updated to take advantage of this (as of this commit): http://github.com/rails/rails/commit/53dda29f8b34073a4b135ee224c1d0...

The yajl-ruby JSON backend would be the first plugable parsing backend to support parsing directly from the IO as a stream. Given todays massively-ajax based web applications, and the popularity of JSON as a transport protocol - I think this patch would be welcomed by the community with open arms.

Rick, the attached diff is mostly from your previous patch to add this in your fork. With small modifications to take advantage of the new IO parsing support for the backends.

Comments and changes to this ticket

  • Rick

    Rick May 18th, 2009 @ 04:22 AM

    • Milestone cleared.

    Doh, I wrote a Rails 3 plugin before I saw this. I'd like to get some people using this before we push this to rails core.

  • Francisco Viramontes

    Francisco Viramontes August 12th, 2009 @ 07:40 AM

    hey!

    I keep getting a strange error rendering json in edge rails.

    The problem is whith this

    respond_to do |format|
            format.json   { 
              render :json             => @devices.to_json(:only => [:id, :name, :unique_identifier], 
                :include               => { 
                  :device_variables    => { 
                    :only              => [:id, :upper_threshold, :lower_threshold],
                    :methods           => [:current_value, :name, :unit]
                  } 
                }
              )
            }
            format.xml  { render :xml  => { :error => "not found" }, :status => 404 }
            format.html { render :file => "public/404.html", :status => 404 }
          end
    

    returns a strange error: wrong argument type Hash (expected Data)

    But not if I do a simpler

     @devices.to_json()
    

    I have the yajl rails plugin installed, any ideas?

    Can I help?

    Here is the full stack trace:

    TypeError in DevicesController#index

    wrong argument type Hash (expected Data)

    RAILS_ROOT: /Users/paki/Work/freshout/ugmo-v2
    Application Trace | Framework Trace | Full Trace

    /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb:222:in to_json' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb:222:insend' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb:222:in method_missing' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/associations/association_collection.rb:392:inmethod_missing_without_paginate' /Users/paki/.gem/ruby/1.8/gems/mislav-will_paginate-2.3.11/lib/will_paginate/finder.rb:170:in method_missing' /Users/paki/Work/freshout/ugmo-v2/app/controllers/devices_controller.rb:13:inindex' /Users/paki/Work/freshout/ugmo-v2/app/controllers/devices_controller.rb:11:in index'

    /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb:222:in to_json' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb:222:insend' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb:222:in method_missing' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/associations/association_collection.rb:392:inmethod_missing_without_paginate' /Users/paki/.gem/ruby/1.8/gems/mislav-will_paginate-2.3.11/lib/will_paginate/finder.rb:170:in method_missing' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/metal/mime_responds.rb:191:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/metal/mime_responds.rb:191:in respond_to' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/base.rb:43:insend_action' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/base.rb:43:in send_action' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/abstract_controller/base.rb:113:inprocess_action' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/abstract_controller/logger.rb:32:in process_action' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/abstract_controller/callbacks.rb:20:inprocess_action' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activesupport/lib/active_support/new_callbacks.rb:422:in _run__815259351__process_action__199225275__callbacks' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activesupport/lib/active_support/new_callbacks.rb:375:insend' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activesupport/lib/active_support/new_callbacks.rb:375:in _run_process_action_callbacks' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/abstract_controller/callbacks.rb:19:inprocess_action' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/metal/rendering_controller.rb:9:in process_action' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/metal/compatibility.rb:83:inprocess_action' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/metal/flash.rb:140:in process_action' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/metal/rescuable.rb:46:inprocess_action' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/abstract_controller/base.rb:91:in process' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/metal/filter_parameter_logging.rb:69:insass_old_process' /Users/paki/.gem/ruby/1.8/gems/haml-2.2.2/lib/sass/plugin/rails.rb:19:in process' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/metal.rb:72:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/metal/rack_convenience.rb:15:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/metal.rb:93:inaction' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/routing/route_set.rb:449:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/routing/route_set.rb:449:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/query_cache.rb:29:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb:34:incache' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/query_cache.rb:9:in cache' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/query_cache.rb:28:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:363:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/head.rb:9:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/methodoverride.rb:24:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/middleware/params_parser.rb:17:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/middleware/session/cookie_store.rb:93:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/middleware/rescue.rb:8:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/middleware/callbacks.rb:35:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/middleware/show_exceptions.rb:47:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/lock.rb:11:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/lock.rb:11:insynchronize' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/lock.rb:11:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/railties/lib/rails/rack/static.rb:31:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/urlmap.rb:46:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/urlmap.rb:40:ineach' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/urlmap.rb:40:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/railties/lib/rails/rack/log_tailer.rb:17:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/content_length.rb:13:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/chunked.rb:15:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/handler/mongrel.rb:61:in process' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:159:inprocess_client' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in each' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:inprocess_client' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in run' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:ininitialize' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in new' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:inrun' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in initialize' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:innew' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in run' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/handler/mongrel.rb:34:inrun' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/railties/lib/commands/server.rb:103 /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:31:in gem_original_require' /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:31:inrequire' script/server:3

    /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb:222:in to_json' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb:222:insend' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/associations/association_proxy.rb:222:in method_missing' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/associations/association_collection.rb:392:inmethod_missing_without_paginate' /Users/paki/.gem/ruby/1.8/gems/mislav-will_paginate-2.3.11/lib/will_paginate/finder.rb:170:in method_missing' /Users/paki/Work/freshout/ugmo-v2/app/controllers/devices_controller.rb:13:inindex' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/metal/mime_responds.rb:191:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/metal/mime_responds.rb:191:inrespond_to' /Users/paki/Work/freshout/ugmo-v2/app/controllers/devices_controller.rb:11:in index' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/base.rb:43:insend_action' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/base.rb:43:in send_action' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/abstract_controller/base.rb:113:inprocess_action' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/abstract_controller/logger.rb:32:in process_action' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/abstract_controller/callbacks.rb:20:inprocess_action' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activesupport/lib/active_support/new_callbacks.rb:422:in _run__815259351__process_action__199225275__callbacks' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activesupport/lib/active_support/new_callbacks.rb:375:insend' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activesupport/lib/active_support/new_callbacks.rb:375:in _run_process_action_callbacks' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/abstract_controller/callbacks.rb:19:inprocess_action' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/metal/rendering_controller.rb:9:in process_action' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/metal/compatibility.rb:83:inprocess_action' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/metal/flash.rb:140:in process_action' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/metal/rescuable.rb:46:inprocess_action' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/abstract_controller/base.rb:91:in process' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/metal/filter_parameter_logging.rb:69:insass_old_process' /Users/paki/.gem/ruby/1.8/gems/haml-2.2.2/lib/sass/plugin/rails.rb:19:in process' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/metal.rb:72:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/metal/rack_convenience.rb:15:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/metal.rb:93:inaction' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/routing/route_set.rb:449:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_controller/routing/route_set.rb:449:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/query_cache.rb:29:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/query_cache.rb:34:incache' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/query_cache.rb:9:in cache' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/query_cache.rb:28:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb:363:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/head.rb:9:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/methodoverride.rb:24:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/middleware/params_parser.rb:17:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/middleware/session/cookie_store.rb:93:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/middleware/rescue.rb:8:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/middleware/callbacks.rb:35:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/middleware/show_exceptions.rb:47:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/lock.rb:11:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/lock.rb:11:insynchronize' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/lock.rb:11:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/railties/lib/rails/rack/static.rb:31:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/urlmap.rb:46:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/urlmap.rb:40:ineach' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/urlmap.rb:40:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/railties/lib/rails/rack/log_tailer.rb:17:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/content_length.rb:13:in call' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/chunked.rb:15:incall' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/handler/mongrel.rb:61:in process' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:159:inprocess_client' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:in each' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:158:inprocess_client' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in run' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:ininitialize' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:in new' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:285:inrun' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in initialize' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:innew' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/lib/mongrel.rb:268:in run' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/actionpack/lib/action_dispatch/vendor/rack-1.1.pre/rack/handler/mongrel.rb:34:inrun' /Users/paki/Work/freshout/ugmo-v2/vendor/rails/railties/lib/commands/server.rb:103 /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:31:in gem_original_require' /opt/local/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb:31:inrequire' script/server:3

    Request

    Parameters:

    {"format"=>"json", "property_id"=>"3"}

    Show session dump


    Response

    Headers:

    None

  • Rick

    Rick August 12th, 2009 @ 10:02 AM

    1) make sure your edge rails is up to date.
    2) Use ActiveSupport::JSON.encode(@devices, :only....).

    Every JSON library implements #to_json differently, so you can't rely
    on it anymore. For more info, check the changelogs, or wait for the
    release announcement when the Rails 3 changes are blogged.

  • Brian Lopez

    Brian Lopez August 12th, 2009 @ 06:16 PM

    So the strange thing is, yajl-ruby only overrides to_json if you specifically require 'yajl/json_gem' somewhere. Your yajl-rails plugin doesn't do that, so I'd also assume to_json would work the way Francisco has it above.

    That being said, ActiveSupport::JSON.encode(@devices, :only....) should work fine.

  • Rick

    Rick August 13th, 2009 @ 03:58 AM

    Sure, that may be true. Maybe another json lib is being loaded? This
    part of rails has changed a lot even between 2.3 and 3.0. There'll be
    some clear guidance on how to proceed when Rails 3 is released.

  • Brian Lopez

    Brian Lopez January 6th, 2010 @ 08:01 PM

    What do you guys think about getting this into core?
    My fork of Rick's plugin should be up to date with both changes to the yajl-ruby API and the Rails JSON backend API.
    http://github.com/brianmario/yajl-rails

    I think it's safe to say enough people are using it (it was also mentioned in the 2.3.3 release notes as being one of the JSON backends) to justify finally getting it into core. Thoughts?

  • Jeremy Kemper

    Jeremy Kemper January 6th, 2010 @ 11:19 PM

    • State changed from “new” to “open”

    +1 for core. Much nicer than the jsongem backend.

  • Brian Lopez

    Brian Lopez January 26th, 2010 @ 04:42 PM

    Here's the patch, hopefully now there's no excuse ;)

  • Brian Lopez

    Brian Lopez January 26th, 2010 @ 04:43 PM

    Btw, I'm pretty sure it'll apply cleanly to the 2.3.x and 3.x branches

  • Lakshan Perera
  • Brian Lopez

    Brian Lopez January 27th, 2010 @ 06:28 AM

    Sorry, the author line was wrong in that patch - use this one instead

  • Repository

    Repository February 5th, 2010 @ 06:23 PM

    • State changed from “open” to “committed”

    (from [a96bf4ab5e73fccdafb78b99e8a122cc2172b505]) Add yajl-ruby as a JSON parsing backend

    [#2666 state:committed]

    Signed-off-by: Jeremy Kemper jeremy@bitsweat.net
    http://github.com/rails/rails/commit/a96bf4ab5e73fccdafb78b99e8a122...

  • Repository
  • Jeremy Kemper

    Jeremy Kemper October 15th, 2010 @ 11:01 PM

    • Milestone set to 3.0.2
    • Importance changed from “” to “High”
  • csnk

    csnk May 18th, 2011 @ 08:30 AM

    We are the professional clothing manufacturer and clothing supplier, so we manufacture kinds of custom clothing manufacturer. welcome you to come to our china clothing manufacturer and clothing factory.

Create your profile

Help contribute to this project by taking a few moments to create your personal profile. Create your profile »

<h2 style="font-size: 14px">Tickets have moved to Github</h2>

The new ticket tracker is available at <a href="https://github.com/rails/rails/issues">https://github.com/rails/rails/issues</a>

People watching this ticket

Attachments

Referenced by

Pages