The fourth year of participation in Google Summer of Code 2015 is over with excellent work done in the areas of Asset Pipeline (performance and... source maps!), Web Console (browser extension), the Rails test suite (Regression Test Selection), development setup (evented file system monitoring) and internals refactoring (cookies). Special thanks to Google, mentors and students who made this all possible.
46 people contributed to Rails this week, including 7 first-time contributors! If you are interested in becoming a contributor, you can have a look at the issues list.
A use case for this would be ignoring columns that are transient. This may happen when using online schema change tools like lhm or pt-online-schema-change.
Not only is it more convenient to pass in the foreign_key as an option to the references method of the create_table DSL, it generates slightly more efficient SQL.
By taking advantage of internal code improvements (the MutationTracker object), Active Record's save and similar methods have received a noteworthy performance improvement.
With this we can perform new assertions on the returned value without assigning it to an outer variable or otherwise wrapping subsequent assertions inside the assert_difference block.
The arguments and behavior of #sum are now consistent with the other aggregate methods (count, average, minimum, and maximum) defined in ActiveRecord::Calculations.
Nothing is more frustrating than a silent failure. This fix handles an error when rake db:structure:load is run and MySQL is not installed. Previously there were no output.
Timestamp columns can have less precision than Ruby timestamps. This affects how a fraction of a second can be stored in the database. To fix this, the precision of the column was used when assigning a value to the timestamp attribute.