Hello,
Iβm @lucianghinda, the curator of this newsletter. If you want a short excerpt of this newsletter containing only some of the images with code, I created one here. But I invite you to read the entire newsletter as it has excellent content π.
If you like it and want to help me reach a wider audience, I would kindly ask you to leave some feedback/short written testimonial that I can display on the About page.
This edition was created with support from @adrianthedev from Avo for Ruby on Rails (a friendly full-featured Rails admin panel) and from @jcsrb, who sent me recommendations to include in the newsletter.
If you have any feedback or ideas about this newsletter, please reach out on Twitter or via email at hello@shortruby.com
π Thiago MassaΒ sharedΒ about how to do a proper Ruby memoization in Ruby
![Memoization in Ruby can be very tricky. π€ Yesterday I've shared the wrong β example with the Ruby idiom for memoization. @mhenrixon pointed out that if the response is nil, it won't memoize and subsequent calls will make the HTTP request again. Did you know that?π Memoization in Ruby can be very tricky. π€ Yesterday I've shared the wrong β example with the Ruby idiom for memoization. @mhenrixon pointed out that if the response is nil, it won't memoize and subsequent calls will make the HTTP request again. Did you know that?π](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F0f55205f-927a-41a5-8f10-89d571a4b6a7_1262x1484.png)
π Shino Kouda shared an example of how to use enum in Rails with integer type and this generated a good discussion about possible issues generated by this approach and how to overpass them:
![](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F80fc9554-a70e-4de5-9dc3-f3f34472cc07_1506x1376.png)
π Josh Cheek shared that when using Postgres, one can define a Postgres Enum type. Here is the gist he created that works by adding the enum type with raw SQL. If you want to do this with Rails 7 it added support for this enum type:
If you want to add a new enum, you will need to write raw SQL with ALTER TYPE. See Rails 7 guides for enumerated types
About using integers for enums, here is a good discussion explaining the pros and cons:
![Agreed. + enums as integers is not a good way to go. Once the system might change requirements to delete existing status or split it into two. Data migration is hard in this case. Also, it's hard for analysing data directly in DB as you need to keep in mind this match. Enums as integers in the database is a trade off. It can save a lot of memory and give you better performance in large tables. But itβs usually not necessary. LiteralEnums can be integers or strings. But theyβre strings by default. Agreed. + enums as integers is not a good way to go. Once the system might change requirements to delete existing status or split it into two. Data migration is hard in this case. Also, it's hard for analysing data directly in DB as you need to keep in mind this match. Enums as integers in the database is a trade off. It can save a lot of memory and give you better performance in large tables. But itβs usually not necessary. LiteralEnums can be integers or strings. But theyβre strings by default.](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd55a72f5-c410-4b7c-b271-10ca0d096fcf_1396x728.png)
Joel Drapper then proposed using a gem he wrote:
![Example of usage for gem literal_enums-rails Example of usage for gem literal_enums-rails](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F6e62cd45-92ab-48ad-a584-8f8bf59fe5e0_1422x1066.png)
![](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F550aa9e6-0be9-4234-ab81-8ea9db06ee80_1416x916.png)
π Kirill ShevchenkoΒ sharedΒ an example of encoding and decoding JSON with gRPC:
![](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fce062bf1-f600-4eb2-9ff3-f78258eb496b_1610x1618.png)
π Stefan VermaasΒ sharedΒ how to display flash messages with Turbo in Rails:
![Played around today with some ideas to display flash messages automatically for Turbo requests in Rails. I believe this it's a decent way to show flash messages as it requires minimal effort to use them. Just use `set_flash_message` and you're good to go. Played around today with some ideas to display flash messages automatically for Turbo requests in Rails. I believe this it's a decent way to show flash messages as it requires minimal effort to use them. Just use `set_flash_message` and you're good to go.](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fa9bfbf8f-e720-4b4c-9f9a-d2a9f1a49a43_1614x1358.png)
π Nate BerkopecΒ sharedΒ how to profile an entire Rails boot sequence:
![Is there actually a good way to profile the _entirety_ of a Rails boot sequence? I threw my profiler around the Rackup file (config-ru) today and it only caught like 25% of actual wall clock time I was seeing w/rails runner. Is there actually a good way to profile the _entirety_ of a Rails boot sequence? I threw my profiler around the Rackup file (config-ru) today and it only caught like 25% of actual wall clock time I was seeing w/rails runner.](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F06e19694-b274-4ac3-b2d2-3d8c53485d08_1478x538.png)
There is a good discussion there about various ways to achieve that. While replying to the thread, Jean Boussier did a PR to stackprof gem to make this happen quickly with the following command:
π Shino KoudaΒ sharedΒ code sample about parsing a JSON and instantiating objects using a feature of JSON.parse:
![Nice way to parse JSON in Ruby, using a poorly documented object_class option (found on SO). Far easier to dig then. Nice way to parse JSON in Ruby, using a poorly documented object_class option (found on SO). Far easier to dig then.](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F70927aa4-10ec-409d-ba5e-6a561cdb4139_1558x914.png)
Just note that using OpenStruct will affect your performance. Here is what the official Ruby documentation says about OpenStruct:
π Tim RileyΒ sharedΒ a thread about making Hanami faster:
![As we near the @hanamirb 2.0 release, weβve been running some benchmarks to make sure the house is in order. We learnt that hanami-controller wasnβt as memory efficient as weβd hoped! A big part of it seemed to be with dry-configurable. As we near the @hanamirb 2.0 release, weβve been running some benchmarks to make sure the house is in order. We learnt that hanami-controller wasnβt as memory efficient as weβd hoped! A big part of it seemed to be with dry-configurable.](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F2163dff4-0ea2-4fc4-b91c-3692dc85b142_1596x610.png)
π Kirill ShevchenkoΒ sharedΒ a code sample to show how to open IRB console within the current scope:
![IRB supports binding.irb feature, which allows you to open the IRB console within the current scope. This can be useful when you want to quickly play around with some snippets without even installing debug gems. #ruby IRB supports binding.irb feature, which allows you to open the IRB console within the current scope. This can be useful when you want to quickly play around with some snippets without even installing debug gems. #ruby](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F24509ad1-8392-4f36-b76b-6128f175091a_1622x1790.png)
π Benito SernaΒ sharedΒ a sample code about polymorphic rendering with ActiveModel and ActionView:
![You can build powerful polymorphic rendering with ActiveModel and ActionView. #ruby #rails #rubyonrails In this example we have an inputs array with different kind of input objects, but as all of them are ActiveModels all of them now to how to be rendered. You can build powerful polymorphic rendering with ActiveModel and ActionView. #ruby #rails #rubyonrails In this example we have an inputs array with different kind of input objects, but as all of them are ActiveModels all of them now to how to be rendered.](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fd53ed152-1642-48f8-afd8-91d8488689a0_1576x1570.png)
![](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf2d772d-7833-4e17-a7c8-8923cd7b55d5_1756x1104.png)
π Justin SearlsΒ sharedΒ his opinion about why he recommends people to avoid RSpec.
![Top of mind things I think are problematic about Spec (literally just typing as I think of stuff): 1. Its implementation is inscrutably complex, so if you have an issue, inspecting the source is not productive solution 2. Its DSL defeats most attempts at automated introspection (Ctags, lang server, etc.) which means navigating the code is very difficult compared to tests of classes/methods 3. The DSL also allows for combinatorial explosions in runtime performance cost via incredibly terse and tidy APIs, most notably via shared_example_groups 4. The DSL provides numerous ways to structure tests and everyone has a different opinion (subject is great, subject is evil, let is good/bad, nesting is good/bad), leading to terrific inconsistency on projects as individuals express their own favorite way on the specs they write unless you dictate a style in a really authoritarian way 5. The rspec-rails tie-ins are often years late to be updated to reflect changes in Rails itself, and when a failure occurs in that gem's indirection, it is very very difficult to workaround as a user. It adds another point of failure for little marginal value 6. Generating specs by looping over data structures is incredibly easy and convenient and often leads to an entire category of bugs (often pointed out by Jim Weirich in his talks) where you might oop over a data structure to generate 100 specs and unwittingly realize that the final test case was actually generated and run 100 times 7. The above is caused by the fact that It's two-pass system: first the specs are loaded and a tree of example groups is constructed dynamically, then a second pass in which the tests are executed. Because it's a DSL and not class/method, it's very easy for developers to fail to grok that there are two runtime contexts and they will often be confused when describe or it or expect behaves differently based on which method the current block is being passed to 8. People who advocate RSpec for the real Dan North BDD purpose it was created will very often tout its utility as a feature behavior elucidation tool, but in practice 99.9% of specs are just symmetric unit and integration tests of code. This creates a lot of tension, as the thing that RSpec is advertised as ("decouple your specs from the implementation class, describe the feature's outcomes instead!") often exacerbates the problem of unclear indirection (when I want to update class X, which spec do I need to drive that change through?). It's just another opportunity for ideological conflict to result in inconsistency and confusion in the test suite I have a lot more but didn't want to spend more than 10 minutes dunking on Spec today Top of mind things I think are problematic about Spec (literally just typing as I think of stuff): 1. Its implementation is inscrutably complex, so if you have an issue, inspecting the source is not productive solution 2. Its DSL defeats most attempts at automated introspection (Ctags, lang server, etc.) which means navigating the code is very difficult compared to tests of classes/methods 3. The DSL also allows for combinatorial explosions in runtime performance cost via incredibly terse and tidy APIs, most notably via shared_example_groups 4. The DSL provides numerous ways to structure tests and everyone has a different opinion (subject is great, subject is evil, let is good/bad, nesting is good/bad), leading to terrific inconsistency on projects as individuals express their own favorite way on the specs they write unless you dictate a style in a really authoritarian way 5. The rspec-rails tie-ins are often years late to be updated to reflect changes in Rails itself, and when a failure occurs in that gem's indirection, it is very very difficult to workaround as a user. It adds another point of failure for little marginal value 6. Generating specs by looping over data structures is incredibly easy and convenient and often leads to an entire category of bugs (often pointed out by Jim Weirich in his talks) where you might oop over a data structure to generate 100 specs and unwittingly realize that the final test case was actually generated and run 100 times 7. The above is caused by the fact that It's two-pass system: first the specs are loaded and a tree of example groups is constructed dynamically, then a second pass in which the tests are executed. Because it's a DSL and not class/method, it's very easy for developers to fail to grok that there are two runtime contexts and they will often be confused when describe or it or expect behaves differently based on which method the current block is being passed to 8. People who advocate RSpec for the real Dan North BDD purpose it was created will very often tout its utility as a feature behavior elucidation tool, but in practice 99.9% of specs are just symmetric unit and integration tests of code. This creates a lot of tension, as the thing that RSpec is advertised as ("decouple your specs from the implementation class, describe the feature's outcomes instead!") often exacerbates the problem of unclear indirection (when I want to update class X, which spec do I need to drive that change through?). It's just another opportunity for ideological conflict to result in inconsistency and confusion in the test suite I have a lot more but didn't want to spend more than 10 minutes dunking on Spec today](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F34e298a1-7465-457e-a227-0874e27b4ede_1498x1830.png)
This generated a lot of responses. You should read the entire thread and also click the quoted tweets. Here is just a summary, but please read those two links to make up your own conclusion:
π Kirill ShevchenkoΒ sharedΒ a code sample showing curry for procs
![Ruby has a curry method for procs. This allows partially applied procs to be returned when they are called with fewer arguments than required. #ruby Ruby has a curry method for procs. This allows partially applied procs to be returned when they are called with fewer arguments than required. #ruby](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb6d10257-14e5-429b-9fc1-c587df6e9b90_1602x1610.png)
π Thiago MassaΒ sharedΒ a code sample with .() shorthand syntax for .call:
![](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F568a8220-8f9b-4e71-bf42-8f80dc14f4c0_1752x1998.png)
Joel Drapper also added the double dot notation works, and it does the same:
![](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F08ba6ab8-358d-4f76-a51a-054aa1338a14_1578x992.png)
π Nate HopkinsΒ sharedΒ a script to work with libraries that are incompatible with Turbo Drive as they assume that the document head is loaded and parsed on every page visit:
![Here's a hack/fix that you can use to force such libs to work with Turbo Drive. It's inefficient from a compute perspective but allows you to use Turbo Drive with incompatible libs. Also for anyone unaware, Turbo Drive provides UX similar to SPAs with minimal developer effort. Here's a hack/fix that you can use to force such libs to work with Turbo Drive. It's inefficient from a compute perspective but allows you to use Turbo Drive with incompatible libs. Also for anyone unaware, Turbo Drive provides UX similar to SPAs with minimal developer effort.](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F39925dc9-6139-449d-802c-8ed05567e47e_1618x1240.png)
π Dave Paola shared that they launched a new project - a development agency with the mission to be the place where Junior Ruby on Rails developers start their careers:
![](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F68ec9e92-5802-4734-a15f-b262e460282a_1632x636.png)
π Meghan Gutshall asked a question about how to explain a Ruby class:
![](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F4952deec-cce2-445a-b7d2-f11a10b7cdfa_1606x604.png)
Here are some replies, but you can find more in the thread:
If you read so far and you like the content, maybe you take into consideration sharing this and subscribe:
Related (but not Ruby specific)
Celso de SÑ asked about what it means to be a mid-level Ruby developer. Here are some of the answers to this question:
I think you should also take a look at βgeekery skillsetβ proposed by GeePaw Hill:
![I propose that there are four (rough and approximate) evolutions in geekery skillset: 1) Thinking in syntax. 2) Thinking in code. 3) Thinking in <paradigm>. 4) Thinking in change. I propose that there are four (rough and approximate) evolutions in geekery skillset: 1) Thinking in syntax. 2) Thinking in code. 3) Thinking in <paradigm>. 4) Thinking in change.](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F7fe918e6-48cc-46ec-b9b0-f45241c7b571_1600x400.png)
Joe Masilotti πΒ sharedΒ a nice trick to skip running Github Actions:
![TIL that you can skip running your GitHub Actions by adding [skip ci] to a commit message. [skipci] (no space), however, does NOT skip CI. TIL that you can skip running your GitHub Actions by adding [skip ci] to a commit message. [skipci] (no space), however, does NOT skip CI.](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F73aad67f-5188-45f3-9fba-abf31f8a41a5_1600x400.png)
Read the documentation for this here.
Tobias Petry.SqlΒ sharedΒ a database tip about making the index invisible:
![Database Tip Deleting an unused index is still a risky operation: If you are wrong (and it is still needed) the database will become slow. Before deleting it, you can make the index invisible first and make it visible again instantly if you still need it. Database Tip Deleting an unused index is still a risky operation: If you are wrong (and it is still needed) the database will become slow. Before deleting it, you can make the index invisible first and make it visible again instantly if you still need it.](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Fb726c133-97e8-4f51-a73c-5f51c9ab07aa_1614x1482.png)
Brandon WeaverΒ sharedΒ about seniority and self-marketing:
![I'll need to write this one up later, but had an interesting conversation and idea today around self-marketing. At very senior levels it's absolutely mandatory to do your job well, but what does that look like? Well it turns out that part is far more complicated. I'll need to write this one up later, but had an interesting conversation and idea today around self-marketing. At very senior levels it's absolutely mandatory to do your job well, but what does that look like? Well it turns out that part is far more complicated.](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F05eebdd4-fd76-4aab-ae27-dd767118f2bc_1640x666.png)
![](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2F04c01f3f-e000-483c-92c9-67c4e8873650_1478x1224.png)
You can read the full thread here or the article Brandon wrote expanding this on this blog: Beyond Senior β The Peacock, the Hermit, and the Counsel
Articles and Videos
Courses or Books or Communities
Brandon WeaverΒ sharedΒ launched a new community focused on learning Ruby. The discord invitation is this one, and the main website is rubylearning.dev. This week we already started working as a group on the book Rebuilding Rails by Noah Gibbs.
Kasper Timm HansenΒ sharedΒ an update about his course called Product Focused Ruby.
Something to read
Soutaro MatsumotoΒ sharedΒ their presentation slidesΒ from RubyKaigi about how to use Ruby types. See the slides here.
Newsletters
Greg MolnarΒ sharedΒ a new issue of This Week in Rails written by Petrik de Heus
Andrew Mason shared a new issue of The Ruby Radar. Read 68: Hack the Planet!
David Colby shared a new issue of Hotwiring Rails. Read Hotwiring Rails - September 2022
Awesome Ruby Newsletter released their 330 newsletter. Read 330 Awesome Ruby Newsletter
RubyWeekly published its 620 newsletter. Read Ruby Weekly #620
Articles
Eric BerryΒ sharedΒ that they wrote about how to use fswatch to build a Rails watcher/runner
Joe Masilotti πΒ sharedΒ a list of 10 of his favorite online communities for Ruby and Rails communities.
JoΓ«l QuennevilleΒ sharedΒ about Working Iteratively
Something to watch π₯ or listen π§
Videos
π₯ Drifting RubyΒ sharedΒ a new episode of the video newsletter for This week in rails. Watch β This Week in Rails Sept 17th, 2022
π₯ Joel Drapper shared a session where he started converting a large ERB to Phlex and then discovered and fixed a bug. Watch β Just trying out
π₯ The Rubber Duck Dev Show shared a new episode with Brittany Martin and Josh Gaastra about Engineering Managers and Product Managers. Watch β EM vs PM! with Brittany and Josh
π₯ Avo shared a video doing a walkthrough of the new features they released. Watch β Avo Admin 2.15 for Ruby on Rails
Audio & Podcasts
π§ Jason Sweet launched a new episode of the Code with Jason podcast where he invited Adrian Marin to talk about Avo and how it is to make tools for developers. Listen β 161 - Adrian Marin, Founder of Avo Admin
π§ JoΓ«l QuennevilleΒ sharedΒ a new episode of The Bike Shed with Sara Jackson where they talk about The History of Computing. Listen β 354: The History of Computing
π§ Ruby For AllΒ sharedΒ a new episode about Bridgetown. Listen β Episode 8: What is Bridgetown. If you like this you should consider joining the Jared White Discord community The Spicy Web
π§ Remote RubyΒ sharedΒ a new episode where they invited Joel Drapper to talk about Phlex: Listen β Phlexing with Joel Drapper
Gems, Libraries, and Updates
π§° Avo shared they released a new version with a lot of features. See the changelog
π§° PostmodernΒ sharedΒ they added ruby 3.2.0 preview 2 to ruby install. See the changelog here. Thus now, the following command should work:
![Added ruby-3.2.0-preview2 to ruby-versions, so ruby-install should now be able to safely download and install it. #ruby $ ruby-install --latest ruby-3.2.0-preview2 Added ruby-3.2.0-preview2 to ruby-versions, so ruby-install should now be able to safely download and install it. #ruby $ ruby-install --latest ruby-3.2.0-preview2](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Feeb5eb7d-9ad9-49ce-bf75-33d9cd6e2216_1600x400.png)
π§° JRuby Dev TeamΒ sharedΒ they released version 9.3.8.0 which includes βa CVE fix for the Psych YAML library, support for lightweight fibers using Java 19 virtual threads, and a bunch of compatibility and bug fixesβ. See changelog
π§° Marco RothΒ sharedΒ that Turbo 7.2 rc1 was released. See the changelog
π§° PostmodernΒ sharedΒ a gem named sord that will transform YARDoc into o Sorbet definitions.
π§° Mike PerhamΒ sharedΒ they released Sidekiq Pro 5.5.4 βfixes a batch race condition which could cause the batch pending count to read -1β. See changelog
π§° Rubygems NewsΒ shared an update for a library called Spy which is a new way of mocking:
![](https://substackcdn.com/image/fetch/w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fbucketeer-e05bbc84-baa3-437e-9518-adb32be77984.s3.amazonaws.com%2Fpublic%2Fimages%2Ff1c3d188-101f-40c8-828e-3b9dd38f5d6d_1794x1116.png)
π§° Nate BerkopecΒ sharedΒ a new library fixture_factory that helps to work with fixtures like factories. Here is a code sample:
π§° Andrew Mason shared a new library they discovered Capybara Test Helpers. Here is what it looks like:
Please consider sharing this on social media or with your colleagues:
If you have any feedback or ideas about this newsletter, please reach out on Twitter or via email at hello@shortruby.com