Welcome to Ruby Facets. I'm Olivier Lacan and every week on this show I'll talk to you about a few interesting things going on in the Ruby community.
You should expect a healthy serving of news with a light sprinkle of opinion on top.
And with that, let's begin.
On September 8th, the Ruby core team released Ruby 2.4.0 Preview 2. Preview 1 was released on June 20th so this new preview should include some fixes to issues reported since then. As a reminder, Ruby 2.4.0 brings a few interesting changes like the merge of the
Bignum classes into a single
Integer class which requires C extensions to be updated. This could be a breaking change so if you maintain a gem with native C extensions or know someone who does, it might be a good idea to start running some tests on Ruby 2.4.0.
2.4.0 also includes performance improvements to
Regexp#match? and the
Array#max methods. Thread deadlocks should also be easier to debug in this new version thanks to new backtraces and dependent thread information when deadlocks occur. Go read the release blog post on ruby-lang.org for more details.
Sidekiq 4.2 from Mike Perham is out with a neat new feature: the ability to live reload code in development mode for Rails 5 apps.
This new version also removed the Sinatra dependency by relying directly on Rack instead. It also offers a new option for tuning concurrency with the
RAILS_MAX_THREADS environment variable which is also used by Puma.
Justin Searls published his Ruby Kaigi talk introducing Suture, a Ruby gem that makes refactoring your Ruby legacy code safer. It's an alternative to existing techniques like characterization testing with test harnesses or A/B-testing with a tool like GitHub's Scientist. Suture tries to define a complete legacy refactoring story by giving you the appropriate tools to record the existing behavior of the code you want to refactor.
I highly recommend watching Justin's talk not only to understand the incredible amount of thought he's put into building a serious refactoring tool for Rubyists, but also because Suture is an impressive example of a thoughtfully designed gem. Its feedback mechanisms alone could warrant their own 30 minute presentation.
Suture helps you identify target legacy behavior, record its output based on a multitude of inputs, point to a new implementation, and compare the behavior of the legacy and new implementation. If there's any divergence in the output, Suture will let you know. And if the divergence in behavior is due to a false negative, Suture also makes it easy to find out what cause the divergent behavior in the refactored code.
You can find a link to Justin's blog post, with slides, a video of the talk and a link to the Suture gem, in the show notes.
Tickets are available for RubyConf 2016 in Cincinnati, Ohio. The conference will take place between November 10th and 12th. Ticket prices are either $400 for a normal ticket or $1,000 if you'd like to support RubyConf.
I believe the supporter ticket also funds the scholarship program that help people in the community who couldn't otherwise afford to come. If you or your company benefit from Ruby, it's a great way to make our community more welcoming and inclusive.
Speaking of making the community better. If you rely on Ruby every day for your work, you should probably consider becoming a member of Ruby Together either yourself or as company member. Ruby Together is a non-profit trade association that funds critical infrastructure projects for the Ruby community like Bundler, RubyGems and RubyGems.org.
So far Ruby Together has managed to raise enough funds to pay a few developers to spend 5 hours per week on maintenance of Bundler and RubyGems.org. With more members, the association could fund further improvements for Bundler, RubyGems.org and RubyGems itself. It could also allow developers to spend more time maintaining these same projects. Memberships for individual developers start at $40 per month and $50 per month for companies.
The Ruby Together team also publishes monthly updates about their accomplishments, improvements they've made, and where money was spent. So even if you can't afford to be a member, you should follow their work.
If you used to listen to Ruby5, then this first episode of Ruby Facets probably sounded familiar to you. For now you'll only hear from me since I can't really afford to publish more than one show per week with multiple hosts.
If you'd like to support Ruby Facets, please take a minute to leave a rating on iTunes or Google Play when the show arrives there later this week. Also I would sincerely appreciate your donations on Patreon to help me produce the show at patreon.com/rubyfacets
Thank you so much for joining me on this new adventure and remember to shine on you crazy Ruby.