rspec - почему это сравнение атрибутов с помощью assert_equal завершается неудачно, когда они одинаковы, только в Ubuntu?

Два теста не пройдены - но только на Ubuntu (12), но не на моем (новом) Mac.

Второй сбой - сравнение атрибутов объекта Active Record, но во всех моих попытках сравнить их, например, сделав хэш в командной строке и вставив атрибуты, сравнение говорит, что они одинаковы.

Настоящая головоломка, так как у нас есть обширный набор тестов с сотнями тестов. Rails 3.2.8, rspec 2.11

Failure/Error: assert_equal @iep_service.attributes, IepService.first.attributes
 MiniTest::Assertion:
   <{"id"=>414,
    "duration"=>30,
    "frequency"=>3,
    "period"=>"week",
    "group_size"=>"group",
    "location"=>nil,
    "service"=>nil,
    "area_of_need"=>"speech",
    "created_at"=>Tue, 09 Oct 2012 01:53:39 UTC +00:00,
    "updated_at"=>Tue, 09 Oct 2012 01:53:39 UTC +00:00,
    "therapist_id"=>nil,
    "start_date"=>nil,
    "end_date"=>nil,
    "student_id"=>469,
    "adhoc"=>false}> expected but was
   <{"id"=>414,
    "duration"=>30,
    "frequency"=>3,
    "period"=>"week",
    "group_size"=>"group",
    "location"=>nil,
    "service"=>nil,
    "area_of_need"=>"speech",
    "created_at"=>Tue, 09 Oct 2012 01:53:39 UTC +00:00,
    "updated_at"=>Tue, 09 Oct 2012 01:53:39 UTC +00:00,
    "therapist_id"=>nil,
    "start_date"=>nil,
    "end_date"=>nil,
    "student_id"=>469,
    "adhoc"=>false}>.
# (eval):2:in `assert_equal'

Тестовый код:

  context "And a pre-existing Iep Service for one of those students" do
    before(:each) { @iep_service = FactoryGirl.create(:iep_service, :student => @district.students.first) }

    context "And an Iep Service CSV" do
      before(:each) { @spreadsheet = IepServiceSpreadsheet.new(@district, open_spec_fixture_file('sample-ieps.csv')) }

      specify "Prevent importing" do
        # Leave database untouched
        assert_equal 1, IepService.count
        assert_equal @iep_service.attributes, IepService.first.attributes

        # Provide error report
        assert @spreadsheet.error_report.any?
      end 
    end 
  end 

Я также попробовал:@iep_service.attributes.should == IepService.first.attributes

но получил:

 Failure/Error: @iep_service.attributes.should == IepService.first.attributes
   expected: {"id"=>421, "duration"=>30, "frequency"=>3, "period"=>"week", "group_size"=>"group", "location"=>nil, "service"=>nil, "area_of_need"=>"speech", "created_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, "updated_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, "therapist_id"=>nil, "start_date"=>nil, "end_date"=>nil, "student_id"=>483, "adhoc"=>false}
        got: {"id"=>421, "duration"=>30, "frequency"=>3, "period"=>"week", "group_size"=>"group", "location"=>nil, "service"=>nil, "area_of_need"=>"speech", "created_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, "updated_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, "therapist_id"=>nil, "start_date"=>nil, "end_date"=>nil, "student_id"=>483, "adhoc"=>false} (using ==)

с большой разницей, включающей в себя "проверку реализации":

      Diff:{"id"=>421, "duration"=>30, "frequency"=>3, "period"=>"week",  
"group_size"=>"group", "location"=>nil, "service"=>nil, "area_of_need"=>"speech",  
"created_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, "updated_at"=>Tue, 09 Oct 2012 02:13:51 
UTC +00:00, "therapist_id"=>nil, "start_date"=>nil, "end_date"=>nil, "student_id"=>483, 
"adhoc"=>false}.==({"id"=>421, "duration"=>30, "frequency"=>3, "period"=>"week", 
"group_size"=>"group", "location"=>nil, "service"=>nil, "area_of_need"=>"speech", "created_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, "updated_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, "therapist_id"=>nil, "start_date"=>nil, "end_date"=>nil, "student_id"=>483, "adhoc"=>false}) returned false even though the diff between {"id"=>421, "duration"=>30, "frequency"=>3, "period"=>"week", "group_size"=>"group", "location"=>nil, "service"=>nil, 
"area_of_need"=>"speech", "created_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, 
"updated_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, "therapist_id"=>nil, "start_date"=>nil, 
"end_date"=>nil, "student_id"=>483, "adhoc"=>false} and {"id"=>421, "duration"=>30, 
"frequency"=>3, "period"=>"week", "group_size"=>"group", "location"=>nil, "service"=>nil, 
"area_of_need"=>"speech", "created_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, 
"updated_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, "therapist_id"=>nil, "start_date"=>nil, 
"end_date"=>nil, "student_id"=>483, "adhoc"=>false} is empty. 
Check the implementation of 
{"id"=>421, "duration"=>30, "frequency"=>3, "period"=>"week", "group_size"=>"group", 
"location"=>nil, "service"=>nil, "area_of_need"=>"speech", "created_at"=>Tue, 09 Oct 2012 
02:13:51 UTC +00:00, "updated_at"=>Tue, 09 Oct 2012 02:13:51 UTC +00:00, 
"therapist_id"=>nil, "start_date"=>nil, "end_date"=>nil, "student_id"=>483, 
"adhoc"=>false}.==.

Ответы на вопрос(1)

Ваш ответ на вопрос