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 π.
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.
π Lucian Ghinda shared a thread about the growing Ruby community:

π Brandon WeaverΒ shared a poll about the behavior of Hash.new([]):
![Ruby folks: Do you find Hash.new([]) confusing? array = [] hash = Hash.new(array) hash[:a] << 1 # => [1] hash[:b] << 2 # => [1, 2] hash[:c] << 3 # => [1, 2, 3] hash # => {} array # => [1, 2, 3] Ruby folks: Do you find Hash.new([]) confusing? array = [] hash = Hash.new(array) hash[:a] << 1 # => [1] hash[:b] << 2 # => [1, 2] hash[:c] << 3 # => [1, 2, 3] hash # => {} array # => [1, 2, 3]](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%2F6bd2e826-91f2-4a5d-9684-cfb19e8f49e5_1270x890.png)
Joel added an excellent rule that could be applied when doing code review:

Josh Cheek showed a funny way to use the Hash.new with arguments (source code Github)
![π€ = Hash.new(Lol = Class.new) π€[π€].define_method(:bbq) { π€[π€] } class Omg < π€[:π] instance_eval { alias wtf new } end Omg.wtf.bbq # => Lol π€ = Hash.new(Lol = Class.new) π€[π€].define_method(:bbq) { π€[π€] } class Omg < π€[:π] instance_eval { alias wtf new } end Omg.wtf.bbq # => Lol](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%2F0dab0fa7-c1ca-4d03-b5bd-459e0629e872_1270x766.png)
Rein Henrichs replied with some more examples of using Hash.new:

Here is the official documentation about Hash.new([])
:
Brandon submitted a feature request to Ruby with some proposal to change or warn when calling Hash.new with non-value objects.
You should read the entire discussion on Twitter as it has more explanations.
π Thiago MassaΒ shared a code sample about using include to add methods to objects:

π Greg NavisΒ shared a Rails tip about Active Record error messages to enable full message customization, defining attribute error format and providing an arbitrary error message:

π Brandon WeaverΒ asked about how to find dead code in Ruby:

Here are some of the answers:
leftovers gem - suggested by Shane BeckerΒ
Deletion Driven Development - a video presentation at RubyKaigi 2016 by Chris Arcand
zombie_scout gem - suggested by Tom Reznick
a module named DeadCode - suggested by Weston Triemstra
coverband gem - suggested by Andy Waite
unused gem - suggested by David Bernheisel
Find AST tool - suggested by JΓ΄natas Davi Paganini
π Emmanuel HayfordΒ shared a tip for Rails 7 to define a to_s on the module and use it with link_to:

π Greg NavisΒ sharedΒ code sample about complex validations in Ruby:

π Thiago MassaΒ shared a code sample about using include and extend and the difference between them:

Jean Boussier shared is a concise explanation about the difference between extend and include:

He also shared a code sample explaining include and prepand:

π Maciej MensfeldΒ sharedΒ a warning about using rest_client
gem:

π Jason SwettΒ shared an explanation about the difference between after_commit and after_save/after_destroy:

See the official documentation here.
π DavidΒ shared a short bit of knowledge about ActiveRecord toggle method:

π Kirill ShevchenkoΒ shared a code sample showing how to remove a method from a class:

Chris Seaton shared a concise way to explain undef_method

π EK shared a quick tip about lazy loading images in Rails and specifying multiple sources:

π Steve PolitoΒ shared a code sample about updating all columns all at once:

π Marc Busqué shared a code sample about functional idiomatic ruby and currying:

Marc also submitted a feature request to Ruby.
π Zilvinas KucinskasΒ shared a code sample about return in lambda vs procs:

π Matt SwansonΒ sharedΒ a code sample with two Rails methods to_sentence
and squish

π Greg NavisΒ shared a code sample aboutΒ validation contexts in Rails:

π Janko MarohniΔΒ shared a code sample showing how to work with window function with Sequel:

π Greg NavisΒ shared the strict option for Rails validates, which will raise an exception when validation fails:

π Tom StuartΒ sharedΒ a code sample showing that in Ruby 3.2 a hash pattern can be used to extract regular expressions named captures:

π Lucian GhindaΒ shared a code sample showing how to use forward argument notation:

π BridgetownΒ shared the registration is open for BridgetownConf:

π Kevin NewtonΒ shared a code sample showing that any expression can be part of the left-hand side of defining a method on an object:

π Kirill ShevchenkoΒ shared a code sample showing how to turn a Class into an Enumerator:

If you have read so far and you like the content, maybe you take into consideration sharing this and subscribing:
Related (but not Ruby-specific)
MayankΒ sharedΒ a simple trick to make attribute selectors case-insensitive:
![i was looking inside UA stylesheets (don't ask why) and learned that you can make attribute selectors case-insensitive by adding an "i" at the end π€― e.g. [data-visible="true" i] matches all of these: <div data-visible=true> <div data-visible="True"> <div data-visible="TRUE"> i was looking inside UA stylesheets (don't ask why) and learned that you can make attribute selectors case-insensitive by adding an "i" at the end π€― e.g. [data-visible="true" i] matches all of these: <div data-visible=true> <div data-visible="True"> <div data-visible="TRUE">](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%2F77f93004-bccd-45a9-a163-8d79fe9cd152_1288x1400.png)
Xavier NoriaΒ reminded us that when using the library, we should only use the public API and no private methods:

Vitaly FriedmanΒ shared an article written by UX team leader from WIX about how to write a good error message:
π Robby RussellΒ shared a tip about using take command with a git repo:
Andrew MasonΒ asked about favorite VSCode extensions:

Here are some of the answers:
Cursor Align (recommended by @adrianthedev)
Multiple cursor case preserve (recommended by @adrianthedev)
Toggler (recommended by @adrianthedev)
Peacock (recommended by @adrianthedev)
Edit csv (recommended by @sebwilgosz)
VSCode Neovim (recommended by @solnic29a)
indent-rainbow (recommended by @lucianghinda)
endwise (recommended by @danieldpence)
Git Web Links for VS Code (recommended by ideasasylum)
rails-latest-migration (recommended by @_swanson)
Sourcegraph (recommended by @jdorfman)
CodeSnap (recommended by @learnactrepeat)
Rails Run Specs (recommended by @learnactrepeat)
TODO Highlight (recommended by @learnactrepeat)
GitLens β Git supercharged (recommened by @alvincrespo)
π§ Adrian MarinΒ sharedΒ a tip about Tailwind 3.2 and usage of new variants for data-* attribute:

π§ Dr NicΒ asked a question about the security risks of including magic links in emails:

Among recommendations:
Make the magic link valid for only 20 minutes
Use an Ajax post of click to log in that submits a form to mitigate the risk of link checkers logging in users.
Be aware of where you include this link, as people might forward an email without knowing there is a magic link
π§ Nate HopkinsΒ presented a kind of architectural challenge about running multiple SQLite instances:

You should read the entire conversation. Here are some of the recommended links there:
π§ Jason SwettΒ shared a new metaphor to think about technical debt:

π§ Alex RussellΒ shared a tread about Frontend development:

Maybe you might consider also reading the HN discussion for this tweet and the thread that Jared White shared quoting Alex Russell.
Articles and Videos
Courses/Books
Noel RappinΒ sharedΒ they are working on a new edition of Programming Ruby - the Pickaxe book. Soon available on The Pragmatic Bookshelf
TimnanΒ launched a new courseΒ Ruby Fundamentals: Learn Ruby and Build Fun Applications
Ben OrensteinΒ sharedΒ they will start a new The 30-Day Code Quality Challenge in January.
Something to read
π Newsletters
π Emmanuel HayfordΒ shared a new edition of This Weekin Rails:Β An Active Record improvement, performance gains and a bugfix!
π Ruby RadarΒ sharedΒ a new edition of πRuby Radar #73 - Build a Bridge, Build a Town
π Ruby Weekly shared a new edition 625 - Puma 6.0 release
π Ruby LibHunt published a new edition of the Awesome Ruby Newsletter
βπΎ Articles
Adrian MarinΒ sharedΒ an article about open source Open-Core Companies Are Not Incentivized To Make Their Projects Good. But you should also read the thread where he shared how he thinks about open-source and how he positions Avo
William KennedyΒ shared an article they wrote for @honeybadgerapp about How to Build Your Own Rails Generator.
Yaroslav ShmarovΒ shared an article they published about sending messages to Slack usingΒ Slack API. Send text, markdown, and files to Slack
Joel DrapperΒ shared a new article they wrote about Magic template methods. You should also read the code in Github where Joel added some explanations.
Adrian MarinΒ shared an article by Kieran Barker about using VSCode Branch Protection
Hanami MasteryΒ shared a new article Pagination in Hanami apps with ROM
Vladimir DementyevΒ shared the second part of the series about View Component:Β ViewComponent in the WildΒ II: supercharging your components
Martin Spickermann shared an article written by Andy Croll about compressing HTML responses from within Rails: Compress Your HTML Responses
Adrian MarinΒ shared an article written by PaweΕ StrzaΕkowski about How to rescue a transaction to roll back changes?
Maciej MensfeldΒ sharedΒ a new article about the security incident with rest_client written by Maria Korlotian: To use rest_client, or to use rest-client, that is the question
Jacques ChesterΒ shared an article about Finding Relationships Between Rubyβs Top 100 Packages and Their Dependencies
Adrian ValenzuelaΒ sharedΒ an article about building web apps: 12 Factor App Revisited
Tim RileyΒ sharedΒ a new article they wrote about: Open source status update, September 2022
Ruby Lib HuntΒ shared an article aboutΒ Top 10 highest paid programming languages in 2022 that includes Ruby in the 7th position.
Dr NicΒ shared an article they wrote aboutΒ Friendly IDs for Ruby on Rails
Konnor RogersΒ sharedΒ a new article they wrote about All the ways to render an ActionText Attachment
The Ruby DevΒ sharedΒ an article written by Trevor Vardeman about Seed Dump: Rails - A Hidden Gem: Seed Dump
Something to watch π₯ or listen π§
π₯ Videos
π₯ Drifting RubyΒ shared new episode about authentication using Magic Links
π₯ Yaroslav ShmarovΒ published a new video about sending messages to Slack: Ruby on Rails #93 Slack API.
π₯ Richard SchneemanΒ sharedΒ a new episode of How to Open Source with Richard Schneeman
π₯ The Rubber Duck Dev ShowΒ launched a new seriesΒ Coding with Chris - Goblin Grinder part 0 (Tech Test and Project Planning)
π₯ Tom StuartΒ shared a new video part of the Making WebAsembly interpreter in Ruby part 9
π₯ Drifting RubyΒ sharedΒ the video version of This Week in Rails Oct 21st, 2022
π§ Audio & Podcasts
π§ The Ruby on Rails PodcastΒ shared a new episode: Episode 440: World Traveler and Ruby 3.2 Preview (Brittany + Jemma)
π§ Ruby For AllΒ sharedΒ a new episode: Episode 13: Julie's Epic Crossover
π§ JoΓ«l QuennevilleΒ sharedΒ a new episode where DoodlingDev discusses the role of Ruby class methods: The Bike Shed: 358: Class Methods
π§ Remote RubyΒ sharedΒ a new episode abvout Rails SaaS and a Shaved Stache
π§° Gems, Libraries, and Updates
π§° R7kamuraΒ shared a new gem rubocop-migration implementing rules that check migrations. See the source code onΒ Github
π§° Dry RbΒ shared the list of dry gems that are using Zeitwerk. Read the article dry-rb adopts Zeitwerk for code loading
π§° Bozhidar BatsovΒ sharedΒ a new release of Rubocop 1.37. Read the changelog to see the new cops added:
π§° Alessandro RodiΒ shared a new gem passkit:
Your out-of-the-box solution to start serving Wallet Passes in your Ruby On Rails application.Β
π§° Marco RothΒ sharedΒ they released v0.51.0 Β· stimulus-use/stimulus-use
π§° Jeremy EvansΒ sharedΒ they released a new version of Rodauth 2.26.0
π§° Rubygems NewsΒ shared a new version ofΒ tailwindcss-rails is released
π§° Koichi ItoΒ sharedΒ a new release of Rubocop Rails v. 2.17.0
π§° Yasuo HondaΒ sharedΒ that the Pull Request to support exclusion constraints was merged to Rails, and it will be released with Rails 7.1
π§° Andrey NovikovΒ sharedΒ they created a new gem that created a yabeda plugin for Sidekiq: yabeda-sidekiq