This week in Rails: 50,000 commits, GSoC opportunity and more!

Ahoy there, rapscallion.

We’re just about to depart for our weekly voyage on the sea of Rails news - beware the great snark!

Captain Kasper abides seas and appeases gods in hopes we make it ashore.

Come aboard and let’s cast away.

Rails crossed 50,000 commits

Our backs are all red from the pats given when news broke of Rails having more than 50,000 commits.
Adding to that chalupa 42 chummy contributors crossed the web and helped out.

10+ Years of Rails with DHH

Listen in as David takes a trip down memory lane. Hear why he made Rails and get some stories on the early days of Rails contributing. He also has some thoughts about money and open source. It might not be such a good thing to get paid to work on open source, after all.

Rails & Google Summer of Code 2015

Speaking of being paid for open source, Rails will be part of this year’s GSoC. I was a student two years ago and wouldn’t be here without it.

I highly recommend doing your research. Submit an honest proposal and you just might make it.

Seagulls of the Sea

Damn Winged Creatures in my Newsletter

There we were. Having a nice day on the deck and a seagull wants to join in on the fun of staring at peaceful waters. Not on my watch.

waves broom

Return to the sea, beast!

New Stuff

Added restart rake task

Rails 5 brings a restart Dr. Frankenstein would be envious of. The new rake restart command will knock your app out cold and zap it back to life.

Enumerable#without

We also got a new Enumerable method to quickly rid of us stuff harmful to humans: [:whooping_cough, :vaccine, :measles].without(:vaccine).

Finally, we can sleep easy.

Wrapping up

That’s all for This week in Rails. As always, there are more changes than we have room to cover here, but feel free to check them out yourself!

P.S. If you enjoyed this newsletter, why not share it with your friends? :) If you wish to be part of this project please don’t hesitate to contact Godfrey – there’re a lot of ways you could help make this newsletter more awesome!

Google Summer of Code 2015

We’re happy to announce that Ruby on Rails will once again be part of Google’s Summer of Code (GSoC) in 2015. The GSoC is a global program where students can contribute to open source projects and get paid while doing so. Every project has at least one community member that will act as mentor for the duration of the program. The only requirements for students applying are:

  • Being at least 18 years old.
  • Being enlisted as a part or full-time college student.

Some of the work done in the past years includes the web-console shipped with Rails 4.2 and RubyBench.org, a long running suite of Ruby benchmarks. You can see the full list of projects from previous years here: 2013, 2014.

We have started writing down a list of ideas for this year, you can find it in the Rails GSoC Wiki. This summer we want to focus on fixing existing problems instead of adding new user facing features. If you are interested in getting involved please join our mailing list and let us know what you’d like to work on.

Student applications can be submitted starting March 16 and the deadline is March 27. If you’re wondering what’s involved in becoming a GSoC student then the Google Student Guide has all the details on what’s expected and what you will gain from taking part in the program.

What if you’re not a student? You can still help out by discussing ideas on the mailing list, and if have previous experience contributing to Rails and are willing to make a strong commitment to help out the next generation of developers, you can apply to be a mentor.

Useful links:

[ANN] Rails 4.2.1.rc3 and 4.1.10.rc3 have been released!

Hi everyone,

I am happy to announce that Rails 4.2.1.rc3 and 4.1.10.rc3 have been released.

There were found some regressions in the last release candidates so, following release process we are releasing new release candidates.

If no regressions are found expect the final release this Thursday, on March 5, 2015. If you find one, please open an issue on GitHub and mention me (@rafaelfranca) on it, so that we can fix it before the final release.

CHANGES since 4.1.9

To view the changes for each gem, please read the changelogs on GitHub:

Full listing

To see the full list of changes, check out all the commits on GitHub.

CHANGES since 4.2.0

To view the changes for each gem, please read the changelogs on GitHub:

Full listing

To see the full list of changes, check out all the commits on GitHub.

SHA-256

If you’d like to verify that your gem is the same as the one I’ve uploaded, please use these SHA-256 hashes.

Here are the checksums for 4.1.10.rc3:

$ shasum -a 256 *4.1.10.rc3*
3fdef2245e3d1cbd23403e319e90504de5a6d9c1d3882520555d5474888e64e8  actionmailer-4.1.10.rc3.gem
b6ee8ce93aeb4e1c3698b5d181997a6cfd903df4ee5ad4ff006ba1e8e4f9cbeb  actionpack-4.1.10.rc3.gem
855a02aa85d9df389ee401d9374ba1b6de97302bfa5b16cc3461b2068f2bac8c  actionview-4.1.10.rc3.gem
1f255ba5894e9c4ba62ff1362eefb5d4f69341e1b6633f34f5a74f3e5f50abe7  activemodel-4.1.10.rc3.gem
ae172a7ad49fe1aa007f99d33c9365f4027f7460aa20b3f2c4e699a029894e9f  activerecord-4.1.10.rc3.gem
efc14fb6fb046314e770f39702cebae5108abfe8a2f972baf503354b4d8962f6  activesupport-4.1.10.rc3.gem
6958130cadf8306732bd0ef09a49f689c85e8f675aa77392c2bff605dc6fe795  rails-4.1.10.rc3.gem
056ae92c2c280c30683bff33840b580dd95a4f6d6a76d760f82dc48d84a39862  railties-4.1.10.rc3.gem

Here are the checksums for 4.2.1.rc3:

$ shasum -a 256 *4.2.1.rc3*
7290338a93cb8d1552aca33b09a8bc00e7774f0110fc1e28af0b495cbd393f24  actionmailer-4.2.1.rc3.gem
9838985eb38550060d4220a9015ca983df1c87c8d059f8943c52db721f2fb7d3  actionpack-4.2.1.rc3.gem
a9af6c312c869ddae79a220c5179d0d80f4fab397115976287a5877d2f80dea2  actionview-4.2.1.rc3.gem
922c47a84ffb1bfde8bc2e3fb18f2e19bb61c8326428c31c09be56296ce6a63b  activejob-4.2.1.rc3.gem
1183c5e4f8c2d608b1d7b774a1720c7595359356c77b495880acf79d22ae0865  activemodel-4.2.1.rc3.gem
7976ea67cd5f7193247751bb6300990d3c5ba9eb74c5ea0c4b382e776a23889e  activerecord-4.2.1.rc3.gem
69704869beccae0694ba5f1e9179eaaa60b99b19adc9a48e890fe1b573894a82  activesupport-4.2.1.rc3.gem
90043b5ce4c1191e62a0c5b6bc4580553a540d7e6d18c7975de180fe8af61462  rails-4.2.1.rc3.gem
a72254f18ab76fca24f3a478779aa34f41a5bf89f71a8fe16f1945f991f0b10f  railties-4.2.1.rc3.gem

I’d like to thank you all, every contributor who helped with this release.

This week in Rails

Another week went by and here we are again, this is Greg with the latest news from the Rails community.

This Week’s Contributors

36 amazing people helped to make Rails even better this week! Thanks everyone!

Interview with Carlos Antonio and Rafael França

Interview with Rails Core team members about early days of their Rails contribution, Rails team, Brazil Rails community, their day to day tools of choice and workflow, and how everyone can help out with Rails.

New Stuff

Default belongs_to validation

belongs_to relations will now trigger a validation error by default if the association is not present. If you wish, you can turn this off with the optional: true option per association.

Move the validate! method to ActiveModel::Validations

validate! was part of Active Record, but with this commit you can use it on any Active Model object!

Allow limit option for MySQL bigint primary keys

From now on, you can set a limit for your bigint type primary keys in MySQL.

Improved

Faster template partial caching

Collections automatically use a read_multi for partials starting with a cache call from now on, which makes them faster.

Fixed

Fixed ActiveModel.model_name.to_json

Previously, calling User.model_name.to_json would result in an infinite recursion, because .model_name inherited .as_json from Object. This commit delegates as_json to the correct handler to fix that.

Fixed mysql’s schema.rb dumper

MySQL doesn’t have a boolean datatype, it uses a tinyint with a limit option, so if we dumped the schema from MySQL we couldn’t load it to Postgres since limit is invalid for Postgres booleans. This patch fixes that by not adding the limit to schema.rb.

Deprecated

skip_action_callback is deprecated

In future skip_before_action, skip_after_action and skip_around_action will raise an ArgumentError if the callback doesn’t exist, so using skip_action_callback, which calls all three methods will probably fail, therefore it became deprecated.

One More Thing™

Richard Schneeman is a Rails Committer!

Please welcome our newest Rails Committer @schneems!

Wrapping up

That’s all for This week in Rails. As always, there are more changes than we have room to cover here, but feel free to check them out yourself!

P.S. If you enjoyed this newsletter, why not share it with your friends? :) If you wish to be part of this project please don’t hesitate to contact Godfrey – there’re a lot of ways you could help make this newsletter more awesome!

[ANN] Rails 4.2.1.rc2 and 4.1.10.rc2 have been released!

Hi everyone,

I am happy to announce that Rails 4.2.1.rc2 and 4.1.10.rc2 have been released.

There were found some regressions in the last release candidates so, following release process we are releasing new release candidates.

If no regressions are found expect the final release this Monday, on March 2, 2015. If you find one, please open an issue on GitHub and mention me (@rafaelfranca) on it, so that we can fix it before the final release.

CHANGES since 4.1.9

To view the changes for each gem, please read the changelogs on GitHub:

Full listing

To see the full list of changes, check out all the commits on GitHub.

CHANGES since 4.2.0

To view the changes for each gem, please read the changelogs on GitHub:

Full listing

To see the full list of changes, check out all the commits on GitHub.

SHA-1

If you’d like to verify that your gem is the same as the one I’ve uploaded, please use these SHA-1 hashes.

Here are the checksums for 4.1.10.rc2:

$ shasum *4.1.10.rc2*
2ac66bc18099e97e91433dd2a16610840adbe229  actionmailer-4.1.10.rc2.gem
7af1a70d5436936df7602ce25b8607dd657d26fd  actionpack-4.1.10.rc2.gem
25f87be1c36551583c5bdc3034731ab9d327e650  actionview-4.1.10.rc2.gem
61eddccaa119592a8fa3424e33af26f3c52afd87  activemodel-4.1.10.rc2.gem
30bd5d356e704f9122f51d0503a3d57bd4b7c456  activerecord-4.1.10.rc2.gem
1da6fd1c9f6a5bebf743ddbc13d25c54293baf5a  activesupport-4.1.10.rc2.gem
7c42be6e6a7f059dcad390f0d690aff842138870  rails-4.1.10.rc2.gem
3f036bc1450f4e784ee0ce8118f057f68e56422d  railties-4.1.10.rc2.gem

Here are the checksums for 4.2.1.rc2:

$ shasum *4.2.1.rc2*
af8d52587a348ea70e9b6a751207a9a6aa4044f3  actionmailer-4.2.1.rc2.gem
ab218bb9396357b48027e1512544cfb3188ec3bd  actionpack-4.2.1.rc2.gem
5315fd389885775fc03863146704aab37333e0c8  actionview-4.2.1.rc2.gem
15c11c2aff82876241a3a9ff90b00dfb6d834fa2  activejob-4.2.1.rc2.gem
f700c318378a8e3292b23c9495e68bc49f9a1ef1  activemodel-4.2.1.rc2.gem
dc91f9e52b8fd9ab0fac294f13ab7f9425cb0a67  activerecord-4.2.1.rc2.gem
ab95e792e93392605985469b3ec0546d3917c63c  activesupport-4.2.1.rc2.gem
af242d941255666ce08a51813898fe8c29bb613d  rails-4.2.1.rc2.gem
c0e72712484fdc821d6a0f08504318e075feba83  railties-4.2.1.rc2.gem

I’d like to thank you all, every contributor who helped with this release.

This week in Rails: http_cache_forever, AR::Base.suppress and more!

My Valentine’s Day letter to Ruby on Rails:

“Dear Rails, remember the first time we met?
You were just 1.2, and I was in an unhealthy relationship with Perl and PHP.

I saw you in the library and I immediately fell in love.
For seven years, you made my code more readable and my skills stronger.

You are the most beautiful framework and always will be.
I cannot wait to see you turn 5.0.” – Claudio

This Week’s Contributors

Apparently I’m not the only one in love with Ruby on Rails. 36 programmers contributed to Rails this week, 10 of them for the first time. Keep loving!

New Stuff

Add http_cache_forever to ActionController

The new method is perfect to cache results that are meant to never expire, such as static pages.

Add ActiveRecord::Type.register

You can now reference with a symbol any database type that is specific to your adapter, such as:
ActiveRecord::Type.register(:money, MyMoneyType)

Add ActiveRecord::Base.suppress

Wrapping a block with suppress will prevent any save operation from hitting the database. Check the PR for a real-world example.

Improved

Add :time option to ActiveRecord::Base.touch

You can now touch an ActiveRecord instance with a different time than the current time.

Removed

Removed RecordTagHelper

The helpers div_for and content_tag_for will be gone in Rails 5. Grab the record_tag_helper gem if you still need them!

Removed ActiveModel::Errors getters/setters

If you ever used person.errors.get(:name) or person.errors[:name] to read an error message, you should now switch to person.errors.messages[:name]. add_on_empty and add_on_blank are gone too.

Update: you should be using person.errors[:name] after all! Use person.errors.add(:name, ...) to append.

Wrapping up

That’s all for This week in Rails. As always, there are more changes than we have room to cover here, but feel free to check them out yourself!

P.S. If you enjoyed this newsletter, why not share it with your friends? :) If you wish to be part of this project please don’t hesitate to contact Godfrey – there’re a lot of ways you could help make this newsletter more awesome!

[ANN] Rails 4.2.1.rc1 and 4.1.10.rc1 have been released!

Hi everyone,

I am happy to announce that Rails 4.2.1.rc1 and 4.1.10.rc1 have been released.

If no regressions are found expect the final release this Wednesday, on February 25, 2015. If you find one, please open an issue on GitHub and mention me (@rafaelfranca) on it, so that we can fix it before the final release.

CHANGES since 4.1.9

To view the changes for each gem, please read the changelogs on GitHub:

Full listing

To see the full list of changes, check out all the commits on GitHub.

CHANGES since 4.2.0

To view the changes for each gem, please read the changelogs on GitHub:

Full listing

To see the full list of changes, check out all the commits on GitHub.

SHA-1

If you’d like to verify that your gem is the same as the one I’ve uploaded, please use these SHA-1 hashes.

Here are the checksums for 4.1.10.rc1:

$ shasum *4.1.10.rc1*
173663408f82f4f6b718d0493ccd7372b1ebb04b  actionmailer-4.1.10.rc1.gem
e2f2239ba08498b0222c73d749ce1fc0b80227ce  actionpack-4.1.10.rc1.gem
3ea60b85b2c6d9c6dd517f19cca6d4184f168c3e  actionview-4.1.10.rc1.gem
fad32c6fa623c848c59c7ec4ea6f95bbe55c800e  activemodel-4.1.10.rc1.gem
5fa2bbfc017cd5000d5a05923b0ed00eaf0763d2  activerecord-4.1.10.rc1.gem
593986a562d2967690def2acfb4f3807b749c8d5  activesupport-4.1.10.rc1.gem
9b3243b73e8094bdef92a9a3fe8e13c59660fcb8  rails-4.1.10.rc1.gem
629269e65fb4b2eaacf3341060b06a6857479ec8  railties-4.1.10.rc1.gem

Here are the checksums for 4.2.1.rc1:

$ shasum *4.2.1.rc1*
7540e2101c574c1b28428d25b26e2840bd811b07  actionmailer-4.2.1.rc1.gem
2256120417e0a2c554fa622f59bfce672c565df2  actionpack-4.2.1.rc1.gem
6add23517bf1c2cdc29b04e5634305c0b5bcc496  actionview-4.2.1.rc1.gem
894a9419a70e6061e07ab2c23f75f0c5fd886b10  activejob-4.2.1.rc1.gem
c268d0711889e2df9991a80f1e01180573b79f9f  activemodel-4.2.1.rc1.gem
39ca67053e52260954876fbf385e260b56c870b9  activerecord-4.2.1.rc1.gem
a937629fed3f6ddeb9f939273dd5e7955a7f25a1  activesupport-4.2.1.rc1.gem
773cce2bacede08390bf9488665d03af33995271  rails-4.2.1.rc1.gem
703b959222cd0466a244cca5bd322de9fb7b76a6  railties-4.2.1.rc1.gem

I’d like to thank you all, every contributor who helped with this release.

This week in Rails: Speedy Integration Tests, Enum Queries and more!

Dearest darling, reindeer-eyed reader

Hither summoned is Kasper, Duke of Friendly Ghosts, to bring forth thy worthy commits and Pull Requests of Rails as subscribed.

Thusly commences our journey on this Friday the 13th - Ok, I’m sick of writing like that.

This Week’s Contributors

A round of applause goes to this weeks contributors from all of us at this virtual news desk. We editors did a full on spit take when realizing a whopping 28 people contributed. Nothing seals that memory quite like the scalding coffee on our thighs.

Integration Tests Only 12% Slower than Controller Tests

You may have thought Speed was just a movie. But we’re feeling it this week as our world got rocked with a refactoring bringing integrations’ speed closer to functionals. Stay at the edge of your seats for the sequel.

Improved

Make enums queryable by label

After an amazing refactoring job on Active Record internals that took many months, this change was easy. Enums can now be queried by their labels. Post.where(status: Post.statuses[:draft]) is out in favor of Post.where(status: :draft).

fresh_when and stale? accepts a collection

They say that stale? is everyone’s best friend. It will be by you until you get to fresh_when. Even if you need help when a collection seems impassable. Look around, you dingus, your best friends are adaptable.

There’s usage examples on the Pull Request.

find_in_batches got an end_at option

Sometimes you gotta know when the fun oughta stop. Sadly find_in_batches and find_each would keep going like the party animals they are. Or were, as both matured this week with a new end_at option. But they’re still keeping it plenty rad in their parents basement if anybody asks.

One More Thing™

Kasper Timm Hansen is an issues team member

Kasper first impressed us when he shipped his 2013 Rails GSoC project in 2014. In his spare time he writes a newsletter called This Week in Rails. In fact he wrote this very issue. Aw shucks, I thought there was something familiar about me and I!

Wrapping up

This was a weird one, right? Hopefully of the glorious kind.

That’s all for This week in Rails. As always, there are more changes than we have room to cover here, but feel free to check them out yourself!

P.S. If you enjoyed this newsletter, why not share it with your friends? :) If you wish to be part of this project please don’t hesitate to contact Godfrey – there’re a lot of ways you could help make this newsletter more awesome!

This week in Rails: locate_many, emoji partials and more!

Hey there!

Newsletter team is back to your inbox delivering all latest good commits and pull requests from Rails. Hopefully you have your favorite drink right there with you to make this quick reading ever better.

This week’s Rails contributors

Over 25 people contributed to Rails this week alone. Perhaps by our next newsletter your name could be on that list too!

Improved

Efficient lookup for many models in Global ID

Latest version of Global ID 0.3.2 brings better look up for models. You can pass an array of ids to locate_many to fetch records only once per model. Check out the juicy comments of Core Team members figuring out their own API.

Partial names don’t have to be valid Ruby identifiers

Rails master can render partial names like _the-friday-party.html.erb just fine now as well. If you are feeling extra adventurous, you might even try naming your partials with emojis!

perform_enqueued_jobs can filter jobs by type

By passing a only option you are able to test only those particular jobs while any other inside the block won’t be performed. Checkout the changelog entry introduced for a crystal clear example usage.

Fixed

Child record validation respects validate: false on parents

Took a few years but this is fixed! Persisting child records will respect the current validation state of the parent record. Also good to see how the team is worrying about performance penalties for fixes in ActiveRecord core logic.

Removed

Dropping xhr helper to simplify AC::TestCase

You will need to update your test suites in case they use either xhr or xml_http_request test helpers. Instead switch to the regular get and pass the keyword argument xhr: true

Farewell Rails built in documentation tasks

Now comes a goodbye to a few friends most of us never knew we had: the documentation rake tasks. The three siblings doc:app, doc:rails and little doc:guides joins local documentation in a better place - online. Our thoughts are with the remaining rake tasks. Rest In Protocols.

One More Thing™

Eileen M. Uchitelle is a Rails Committer

Eileen has been doing awesome work on Active Record related to performance refactoring and bug fixes besides mentoring some students in the Facebook Open Academy program.

Wrapping up

That’s all for This week in Rails. As always, there are more changes than we have room to cover here, but feel free to check them out yourself!

P.S. If you enjoyed this newsletter, why not share it with your friends? :) If you wish to be part of this project please don’t hesitate to contact Godfrey – there’re a lot of ways you could help make this newsletter more awesome!

This week in Rails: Relation#or, file fixtures, kwargs and more!

It is that time of the week again!

This is Greg, bringing you this week’s interesting commits and pull requests from Rails.

This week’s Rails contributors

Let’s start with a big thank you for all the people who helped this week to make Rails better!

New Stuff

Added #or to ActiveRecord::Relation

A long waited feature is added to Active Record and from now on you can combine two Active Record relations with the or operator.

ActiveSupport::Testing::FileFixtures

With this addition to ActiveSupport::Testing there is no need to write custom helpers for testing features requiring a sample file (i.e. file uploads).

Use kwargs in the test’s HTTP methods

Support for keyword arguments is added to the HTTP methods of the controller tests. An example of the new syntax:

post :create, params: { y: x }, format: :json

Improved

Improved performance of integration tests

delegate turned out to be a bottleneck at the URL generation in the integration tests. With this patch the integration tests of the applications should have a speedup.

Allow hyphenated names for plugins

From now on you can generate a Rails plugin with a hyphenated name (i.e. namespaced engines).

Deprecated

*_via_redirect integration test methods are deprecated

The *_via_redirect methods are deprecated but do not fear, you can use follow_redirect! in your test suite for the same behaviour.

Fixed

Fixed HTTP basic authentication nil issue

When request.authorization returned nil, Rails raised a NoMethodError, but this is fixed now.

AR::Relation#group accepts SQL reserved keywords

This patch allows you to group by SQL reserved keywords with the group method of Active Record.

One More Thing™

Arthur Nogueira Neves is a Rails Committer

Please welcome our newest Rails Committer!

Wrapping up

That’s all for This week in Rails. As always, there are more changes than we have room to cover here, but feel free to check them out yourself!

P.S. If you enjoyed this newsletter, why not share it with your friends? :) If you wish to be part of this project please don’t hesitate to contact Godfrey – there’re a lot of ways you could help make this newsletter more awesome!