I'm a Rails contributor! | BlueDiapente - Lilibeth De La Cruz


I'm a Rails contributor!

My pull request was merged into Rails!

It was a tiny change, but it still feels nice to be able to give something back to a project that has given us so much. Using Rails over the last couple of years has been a very enjoyable experience and the wonderful community of both Rails and Ruby is a great part of that.

I read this tweet by DHH yesterday about how they are close to 3,000 unique Rails contributors.
What an amazing team effort!

DHH Tweet Rails 3000 contributors

It is hard work to maintain an open source project. It goes beyond writing code and also involves managing social interactions and communication effectively. In a popular project like Rails, that receives many pull requests every day, maintainers go through each one and review it while being polite and avoiding discouraging people when they have to suggest changes or simply reject a pull request.

Based on the experience I had and checking the comments on other pull requests, the Rails team seems to be doing a great job. They are very friendly, show appreciation, provide feedback quickly and politely explain when they can't accept a pull request.

The Issue

I noticed the issue while working on an application that relied on Dirty to track attribute changes.

I'll let the message for the CHANGELOG and commit explain it better:

Previously, when time_zone_aware_attributes were enabled, after
changing a datetime or timestamp attribute and then changing it back
to the original value, changed_attributes still tracked the
attribute as changed. This caused [attribute]_changed? and
changed? methods to return true incorrectly.


in_time_zone 'Paris' do
  order = Order.new
  original_time = Time.local(2012, 10, 10)
  order.shipped_at = original_time
  order.changed? # => false

  # changing value
  order.shipped_at = Time.local(2013, 1, 1)
  order.changed? # => true

  # reverting to original value
  order.shipped_at = original_time
  order.changed? # => false, used to return true