This project is archived and is in readonly mode.

Hashes with Time instances in it breaks when to_json is called on it.
Reported by August Lilleaas | May 30th, 2010 @ 01:59 AM | in 3.0.2
Hashes with time objects in them will cause an error when
to_json is called on it.
{:date => Time.utc(2008, 5, 17)}.to_json
The stack trace is rather peculiar as well. Here's a snippet from a irb session, with backtrace silencers removed.
ruby-1.8.7-p249 >  {:foo => Time.now}.to_json
ArgumentError: wrong number of arguments (2 for 0)
      from (irb):1:in `to_json'
      from (irb):1
Attached a patch with a simple test case that will demonstrate the breakage.
Comments and changes to this ticket
- 
         Neeraj Singh May 30th, 2010 @ 04:33 AMI tested it with rails edge. I am not able to produce this problem with script/console. ruby-1.8.7-p249 > {:date => Time.utc(2008, 5, 17)}.to_json => "{\"date\":\"2008-05-17T00:00:00Z\"}" ruby-1.8.7-p249 > {:date => Time.utc(2008, 5, 17)}.to_json => "{\"date\":\"2008-05-17T00:00:00Z\"}"I am not able to produce problem with rails runner $ rails runner 'User.lab' {"date1":"2008-05-17T00:00:00Z"} class User < ActiveRecord::Base def self.lab t = Time.utc(2008, 5, 17) real = {:date1 => t}.to_json puts real end endHowever the attached test code is indeed failing which is really weird. Without digging dip into it I have a feeling that in test somewhere something is getting changed which is messing up to_json. 
- 
         Santiago Pastorino May 30th, 2010 @ 05:39 AM- Milestone cleared.
- Tag changed from activesupport, json, rails3 to activesupport, json, patch, rails3
- State changed from new to open
- Assigned user set to Yehuda Katz (wycats)
 Neeraj try this and you will see the failure ... >> santiago@debian:/tmp/myapp$ rails c Loading development environment (Rails 3.0.0.beta3) >> {:date => Time.utc(2008, 5, 17)}.to_json NoMethodError: undefined method `to_json' for {:date=>Sat May 17 00:00:00 UTC 2008}:Hash from (irb):1Here is a fix i think the code regarding to json on AS is not properly organized, i will refactor this at some point.
- 
            
         August Lilleaas May 30th, 2010 @ 12:22 PM@Neeraj Singh: Perhaps you have the json gem vendored elsewhere, or directly in the Gemfile, causing Rails to use that one instead of the bundled one? I'm also on edge rails, btw: gem 'rails', :git => 'git://github.com/rails/rails.git'.
- 
         Neeraj Singh May 30th, 2010 @ 02:50 PMThis is what I have in my Gemfile. $ cat Gemfile source 'http://rubygems.org' #gem 'rails', '3.0.0.beta3' gem 'rails', :git => 'git://github.com/rails/rails.git' gem 'sqlite3-ruby', :require => 'sqlite3'in console ruby-1.8.7-p249 > {:date => Time.utc(2008, 5, 17)}.to_json => "{\"date\":\"2008-05-17T00:00:00Z\"}"Really weird that I'm not able to reproduce it. 
- 
         Repository June 26th, 2010 @ 08:15 PM- State changed from open to committed
- Importance changed from  to Medium
 (from [926ca9c102db5034d4eb1ab0f915ea643145e284]) Load JSON additions (as to_json) on active_support/all. [#4730 state:committed] Signed-off-by: José Valim jose.valim@gmail.com 
 http://github.com/rails/rails/commit/926ca9c102db5034d4eb1ab0f915ea...
- 
            
         seamusabshere July 16th, 2010 @ 02:31 PM- Assigned user changed from Yehuda Katz (wycats) to Santiago Pastorino
 che Santiago, I think the original problem remains: $ gem list json *** LOCAL GEMS *** json (1.4.3) json_pure (1.4.3) $ gem list activesupport *** LOCAL GEMS *** activesupport (3.0.0.beta4, 2.3.8, 2.3.5) $ irb ruby-1.8.7-head > require 'rubygems' => true ruby-1.8.7-head > require 'active_support/json' => true ruby-1.8.7-head > { :hello => Time.now }.to_json ArgumentError: wrong number of arguments (2 for 1) from (irb):3:in `to_json' from (irb):3Best, 
 Seamus
- 
         
- 
            
         
- 
            
         csnk May 18th, 2011 @ 08:30 AMWe 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
Tags
Referenced by
- 
         4730 
          Hashes with Time instances in it breaks when to_json is called on it.
        [#4730 state:committed] 4730 
          Hashes with Time instances in it breaks when to_json is called on it.
        [#4730 state:committed]
 Jeremy Kemper
      Jeremy Kemper
 Santiago Pastorino
      Santiago Pastorino
 Yehuda Katz (wycats)
      Yehuda Katz (wycats)