---
title: "#349: A Guide to Ruby Backend Performance"
publication: "Ruby Weekly"
issue: 349
published_at: "2017-05-18"
canonical_url: "https://rubyweekly.com/issues/349"
---

#349: A Guide to Ruby Backend Performance

This week's Ruby and Rails news[Read this e-mail on the Web](http://rubyweekly.com/issues/349)

Ruby WeeklyIssue 349 — May 18, 2017

Thoughtbot[Writing A Hypermedia API Client in Ruby](https://robots.thoughtbot.com/writing-a-hypermedia-api-client-in-ruby)An accessible tutorial on the concepts of hypermedia APIs along with a plain-Ruby implementation example.


Chris Herring[A Deep Dive on Testing a Feature with Rails and RSpec](https://chrisherring.co/posts/testing-a-feature-with-rails-and-rspec-a-deep-dive)If you’re new to RSpec and/or Rails, this is an extremely detailed tutorial on TDD with RSpec.


Richard Schneeman[A Starter Guide to Ruby Backend Performance](http://schneems.com/2017/05/17/ruby-backend-performance-getting-started-guide/)Some tips and wisdom on finding performance issues in your apps, along with practices to use to build your own approach.


Honeybadger Exception MonitoringSponsored[Mastering Ruby Exceptions](https://honeybadger.leadpages.co/exceptions/)How well do you know Ruby's exception system? This free thirty-nine-page book will take you from novice to expert.

[![Honeybadger Exception Monitoring\](https://copm.s3.amazonaws.com/b246ab9e.png)](https://honeybadger.leadpages.co/exceptions/?utm_source=rubyweekly&utm_medium=email)


Aaron Lasseigne[Polyfill: Use Newer Ruby Features on Older Versions](https://github.com/AaronLasseigne/polyfill)Not everything from 2.2 through 2.4 is implemented yet but there’s a helpful table of what is and you’re encouraged to contribute more.


Sinatra[The Official Sinatra 2.0 Release Post](http://www.sinatrarb.com/2017/05/15/sinatra-two-point-oh.html)We mentioned Sinatra 2.0’s release in last week’s issue, but here’s the official announcement with more background.


Andrew Kozin[Fighting the Hydra of N+1 Queries with Tests](https://evilmartians.com/chronicles/fighting-the-hydra-of-n-plus-one-queries)A test-focused approach of detecting dreaded N+1 issues before they get into production code.


Maciek Głowacki[Fixing Unicode for Ruby Developers](https://blog.daftcode.pl/fixing-unicode-for-ruby-developers-60d7f6377388)The final part of a 3-part series on Unicode that addresses normalizing strings to avoid confusion and security issues.


Jobs

- [VP of Engineering at Honestbee - Paid Relocation to Singapore](https://jobbatical.com/l/455882425/vp-of-engineering-honestbee-singapore?utm_source=rubyweekly&utm_medium=email)Go international as the VP of Engineering (RoR, Node.js) at Honestbee. Join the team and get paid relocation, local residency, etc. Honestbee
- [Senior/Lead Ruby Engineer (New York, NY)](https://simplereach.recruiterbox.com/jobs/fk0m3lb?cjb_hash=O_ChbZ98&apply_now=true)We’re changing the way content is measured. If you’re a Rails expert who likes working with smart people, we want to talk to you. SimpleReach
- [Ruby on Rails Full Stack Developer • Remote • Full or Part-time](https://www.smartrecruiters.com/HarleyTherapy/116035029-ruby-on-rails-full-stack-developer-remote-based-full-or-part-time?utm_source=rubyweekly&utm_medium=email)Opportunity for a senior full-stack Ruby on Rails developer to build a first-rate online marketplace & practice management web app Harley Therapy Platform

In brief

- [Rails 5.0.3 and 5.1.1 Released](http://weblog.rubyonrails.org/2017/5/12/Rails-5-0-3-and-5-1-1-have-been-released/?utm_source=rubyweekly&utm_medium=email) news 
Both are non-urgent bugfix releases only. Official Rails Blog
- [Debugging a Memory Leak on Heroku](https://resources.codeship.com/ebooks/debugging-memory-leaks-heroku-aw?utm_source=email-sponsorship&utm_medium=cpc-ruby-weekly-secondary&utm_campaign=cooper-ebook-debugging-memory-leak-heroku-campaign) 
In this free eBook you will learn how to debug a memory leak on Heroku. CodeshipSponsored
- [Quick Tip: Don’t Use Objects as Hash Keys](https://6ftdan.com/allyourdev/2017/05/13/dont-use-objects-as-hash-keys-in-ruby/?utm_source=rubyweekly&utm_medium=email) tutorial Daniel P. Clark
- [The Hidden Cost of Invisible Extraneous Queries in Rails](https://alexcastano.com/the-hidden-cost-of-the-invisible-queries-in-rails/?utm_source=rubyweekly&utm_medium=email) tutorial Alex Castaño
- [Developing Games With Ruby](https://leanpub.com/developing-games-with-ruby/read?utm_source=rubyweekly&utm_medium=email) tutorial 
A Leanpub book on developing 2D graphical games that's free to read online. Tomas Varaneckas
- [What If We Organized Code by Features?](https://www.saturnflyer.com/blog/2017/5/17/what-if-we-organized-code-by-features?utm_source=rubyweekly&utm_medium=email) tutorial Jim Gay
- [Quick Tip: Rails 5.1 Does Not Share thread_mattr_accessor](http://blog.bigbinary.com/2017/05/16/rails-5-1-does-not-share-thread-mattr-accessor-variable-with-sub-class.html?utm_source=rubyweekly&utm_medium=email) tutorial 
Fixes an issue from Rails 5.0 where thread_mattr_accessor variables were shared with subclasses. Mohit Natoo
- [Using Elm on Rails 5.1 with Webpacker](http://bendyworks.com/blog/elm-on-rails-5-1-webpacker?utm_source=rubyweekly&utm_medium=email) tutorial Bendyworks
- [How to Build a Slack Bot in Ruby](https://revs.runtime-revolution.com/how-to-build-a-ruby-slackbot-bc7115b4eeaf?utm_source=rubyweekly&utm_medium=email) tutorial Runtime Revolution
- [A Simple Step-by-Step Start to Using GraphQL with Rails](http://drianhillman.me/2017/05/06/graphql-ruby?utm_source=rubyweekly&utm_medium=email) tutorial Drian Hillman
- [Using Result Objects for Errors Without Exceptions](http://www.rubypigeon.com/posts/result-objects-errors-without-exceptions/?utm_source=rubyweekly&utm_medium=email) tutorial 
A look at Result objects for more explicit exception handling. Tom Dalling
- [24/7 operations support built just for ROR](https://reinteractive.com/enquiries/new?code=ops_care&sid=129) 
Keep your team busy building your app, not solving ops headaches. Unlimited deploys, immediate roll-back & more. reinteractiveSponsored
- [A Tale of Fixing a Bug in JRuby](http://etehtsea.me/how-to-find-and-fix-bug-in-jruby-and-dont-go-crazy?utm_source=rubyweekly&utm_medium=email) story Konstantin Shabanov
- [On Cleaner Routing in Rails](https://josh.works/cleaner-controllers?utm_source=rubyweekly&utm_medium=email) story 
Having a lot of nested controllers can make the routes file a mess. Here’s one story of cleaning up these routes. Josh Thompson
- [Routing Partials](https://www.driftingruby.com/episodes/routing-partials?utm_source=rubyweekly&utm_medium=email) video 
A way to separate routes into files to remove noise in large Rails apps. Drifting Ruby
- [Writing A GameBoy Emulator in Ruby](https://www.youtube.com/watch?v=WbO2FEpNPvQ&list=PL9_jjLrTYxc3hxsmj3AnPFf3RD4f3zfUl&index=4) video Colby Swandale
- [Continuous Integration and Delivery for Ruby Projects Made Easy](https://circleci.com/features/ruby/?utm_source=cooperpress&utm_medium=newsletter&utm_content=ruby-weekly&utm_campaign=may) tools CircleCISponsored
- [CanCanCan 2.0: The Authorization Library](https://medium.com/renuo/cancancan-2-0-is-out-98abbf8f32d4?utm_source=rubyweekly&utm_medium=email) code 
[GitHub repo.](https://github.com/CanCanCommunity/cancancan) Alessandro Rodi
- [cuckoo_filter: Pure Ruby Cuckoo Filter Implementation](https://github.com/pawandubey/cuckoo_filter?utm_source=rubyweekly&utm_medium=email) code 
Quickly determine set membership, such as an object in a cache or similar store. Pawan Dubey

Curated by [Peter Cooper](https://twitter.com/peterc) and [Glenn Goodrich](https://twitter.com/ruprict), and published by [Cooperpress](https://cooperpress.com/).
Send feedback by simply replying to this mail.
Want to sponsor an issue? See our [media kit.](https://cooperpress.com/mediakit)
Want to post a job? Email us or [use our self-serve system.](https://booking.cooperpress.com/jobs)

[Unsubscribe](*|UNSUB|*) | [Change email address](*|UPDATE_PROFILE|*) | [Read this issue on the Web](http://rubyweekly.com/issues/349)

© Cooperpress Ltd. Office 30, Lincoln Way, Louth, LN11 0LS, UK
[Email policy](https://cooperpress.com/spam.html) [Privacy policy](https://cooperpress.com/privacy.html)
