---
title: "A guide to function composition in Ruby 2.6+"
publication: "Ruby Weekly"
issue: 449
published_at: "2019-05-09"
canonical_url: "https://rubyweekly.com/issues/449"
---

This week's Ruby news, issue 449       

#449 — May 9, 2019 

[Read on the Web](https://rubyweekly.com/issues/449)   

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/v1557401515/hjvbxzesyumjot3tts6a.jpg)](https://www.ghostcassette.com/function-composition-in-ruby/)   

[A Guide to Function Composition in Ruby](https://www.ghostcassette.com/function-composition-in-ruby/) — Ruby 2.6’s introduction of the `<<` and `>>` function composition operators has opened up some interesting new techniques and this article tours them deftly. This topic clearly inspired two people at the same time as Tom Wey has [a related article on function composition](https://thoughtbot.com/blog/proc-composition-in-ruby) you might also enjoy. 

Paul Mucur   

[RubyKaigi and the Path to Ruby 3](https://developer.squareup.com/blog/rubykaigi-and-the-path-to-ruby-3/) — A summary of Matz’s talk at RubyKaigi that focused on performance, concurrency, and static analysis as they lay the path for Ruby 3, expected late in 2020. 

Shannon Skipper   [![\](https://copm.s3.amazonaws.com/20f572ce.png)](https://depfu.com/l/reasonably-up-to-date?utm_source=rubyweekly&utm_campaign=primary&utm_content=reasonably) 

[Automated Dependency Updates Done Right](https://depfu.com/l/reasonably-up-to-date?utm_source=rubyweekly&utm_campaign=primary&utm_content=reasonably) — Stop chasing the latest versions. Depfu's new reasonably up-to-date feature "matures" releases before sending you pull requests, while making sure you're never more than 1 month behind. 

Depfu sponsor   

[Ruby 2.7 Adds Experimental Shorthand Operator for `Object#method`](http://blog.saeloun.com/2019/02/26/ruby-2-7-method-shorthand.html) — Years in the making, this allows you to use `thing.:method_name` instead of `thing.method(:method_name)`. You might find some of the [discussion behind the design](https://bugs.ruby-lang.org/issues/13581) interesting too. 

Vipul A M       

🎧 Podcasts of the Week 

There have been a few interesting Ruby related podcast episodes this week that are worth checking out if you have time: 

- Phusion's [Hongli Lai was on _Ruby Rogues_](https://devchat.tv/ruby-rogues/rr-411-what-causes-ruby-memory-bloat-with-hongli-lai/) discussing the history of Phusion and Passenger and [his latest work looking into Ruby memory bloat.](https://www.joyfulbikeshedding.com/blog/2019-03-14-what-causes-ruby-memory-bloat.html) Why is Passenger better than Puma? Hongli has an answer.
- Chris Oliver was on the _Ruby on Rails podcast_ with [a mega RailsConf 2019 roundup](http://5by5.tv/rubyonrails/271) (it took place last week).
- Lori Olson, well known for her training and her involvement with RubyMotion, was [telling her Ruby story](https://devchat.tv/my-ruby-story/mrs-087-lori-olson/) on the _My Ruby Story_ podcast.    

💻 Jobs  

[New Career for Ruby Engineers. All Levels (Edinburgh, Remote)](https://www.freeagent.com/careers/) — Popular, award-winning Ruby/Rails SaaS product. Flexible, inclusive, happy team. Great work/life balance and benefits. Join us. 

FreeAgent   

[Senior Software Developer - Ruby (London, UK)](https://www.charliehr.com/careers) — We're a SaaS business that helps run, build and change small companies so they can run, build and change the world. 🚀 

CHARLIEHR   

[Find A Ruby Job Through Vettery](https://www.vettery.com/tech?utm_source=newsletter&utm_medium=cooper-rubyweekly&utm_term=tech&utm_content=grouped&utm_campaign=ad-77583) — Vettery specializes in tech roles and is completely free for job seekers. 

Vettery  

📘 Articles & Tutorials  

[Instrumenting Rails Apps with Prometheus](https://www.firehydrant.io/blog/instrumenting-ruby-on-rails-with-prometheus/) — A demonstration of how straightforward it is to export telemetry from Rails to the [Prometheus](https://prometheus.io/) open source monitoring system using `ActiveSupport::Notifications` and the [prometheus_exporter](https://github.com/discourse/prometheus_exporter) gem. 

Bobby Tables   

[6 Postgres Tips for Rails Developers](https://www.citusdata.com/blog/2017/04/28/postgres-tips-for-rails/?utm_source=Ruby_Weekly&utm_medium=email&utm_campaign=sponsor_blog) — Improving Postgres performance for Rails, ft. statement time-outs, marginalia, pg_stat_statements, pgBouncer. 

CITUS DATA, A MICROSOFT COMPANY sponsor   

[Weird Ruby: Pure Object-Oriented Negation](https://metaredux.com/posts/2019/05/05/weird-ruby-pure-object-oriented-negation.html) — The first post in a series that explores the ‘twilight zone’ of Ruby. This post talks about the negation unary method (`!`) and what you can (and shouldn’t) do with it. You can play similar games with [unary plus and minus too.](http://www.rubyinside.com/rubys-unary-operators-and-how-to-redefine-their-functionality-5610.html) 

Bozhidar Batsov   

[How to Create an Array Containing a Single Hash Without Using Curly Braces](https://smallcity.ca/2019/05/04/create-an-array-with-a-single-hash-without-the-curlys.html) — This is rather niche and a bit of a Ruby syntax quirk but I didn’t realize this would happen. Essentially `[{ a: 10 }] == [a: 10]` 

Sean Lerner   

[How to Setup Ruby Object Mapper (ROM) for a Standalone Project](https://medium.com/@igkuz/how-to-setup-ruby-object-mapper-rom-for-standalone-project-15472fcf31e1) — A look at setting ROM alone, without any web framework, covering migrations, testing, commands, and relations. 

Igor Kuznetsov   

[Full Text Searching Linux Man Pages with Elasticsearch and Ruby](https://iridakos.com/tutorials/2018/04/12/elasticsearch-linux-man-pages) — Yes, it’s from 2018 but I missed the opportunity to link it earlier :-) 

Lazarus Lazaridis   

▶[Nested Forms From Scratch with Stimulus](https://www.driftingruby.com/episodes/nested-forms-from-scratch-with-stimulusjs) — What’s involved in building forms in the new Rails order (i.e. Rails 6) without having to pull in any third-party gems to help. 

Drifting Ruby  

🔧 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60/vaimd8zhygsp6g5gugtr.jpg)](https://github.com/dejan/rails_panel)  

[RailsPanel: A Chrome Extension for Rails Development](https://github.com/dejan/rails_panel) — Stop tailing `development.log` and see info about your app’s requests in Chrome’s DevTools instead. The first new version in over a year just dropped. 

Dejan Simic   

[SearchFlip: Full-Featured Elasticsearch Client with Chainable DSL](https://github.com/mrkamel/search_flip) — Elasticsearch is still the best system I’ve found to add powerful search features to my apps, so maybe I’ll give this a try.. 

Benjamin Vetter   

[Get the Fastest Website Deployments. Get Started Free](https://buddy.works/?utm_source=sscprw&utm_campaign=sscprw0905&utm_content=bl) 

Buddy sponsor   

[Xcodeproj: Create and Modify Xcode Projects from Ruby](https://github.com/CocoaPods/Xcodeproj) — One for you macOS/iOS developers, this could help you script away boring management tasks or auto generate projects, etc. 

CocoaPods   

[split: The Rack Based A/B 'Split' Testing Framework](https://github.com/splitrb/split) — A very mature framework with robust configuration and multiple options for determining the winning option. 

Split   

[MiniMagick: A Mini Replacement for RMagick](https://github.com/minimagick/minimagick) — If you were working with Ruby over 10 years ago, you can probably remember how irritating `rmagick` often was to install, so alternatives are always welcomed :-) 

Corey Johnson   

[Tmuxinator 1.0: A Tool to Manage Complex `tmux` Sessions Easily](https://github.com/tmuxinator/tmuxinator) — [tmux](https://en.wikipedia.org/wiki/Tmux) is a terminal multiplexer a lot like `screen` but with more features. 

tmuxinator   

[Eucalypt: A New Sinatra App Generator](https://github.com/eucalypt-framework/eucalypt) — It’s early days for this, but as a Sinatra fan myself, it’s great to see more tooling appear around it. 

eucalypt         

Curated by [Glenn Goodrich](https://twitter.com/ruprict) and [Cooperpress](https://cooperpress.com/). 

[Change your email address](https://rubyweekly.com/edit_subscription/*|UID|*) or[Stop getting this newsletter](https://rubyweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom
