<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jokūbas Pučinskas</title>
    <description>The latest articles on DEV Community by Jokūbas Pučinskas (@pucinsk).</description>
    <link>https://dev.to/pucinsk</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F252512%2F13ca6404-ba98-4d52-9261-50d31c2482d8.jpg</url>
      <title>DEV Community: Jokūbas Pučinskas</title>
      <link>https://dev.to/pucinsk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pucinsk"/>
    <language>en</language>
    <item>
      <title>Callbacky - bring callbacks to simple Ruby objects</title>
      <dc:creator>Jokūbas Pučinskas</dc:creator>
      <pubDate>Tue, 03 Jun 2025 14:33:05 +0000</pubDate>
      <link>https://dev.to/pucinsk/callbacky-bring-callbacks-to-ruby-objects-5d2p</link>
      <guid>https://dev.to/pucinsk/callbacky-bring-callbacks-to-ruby-objects-5d2p</guid>
      <description>&lt;p&gt;Hey folks! 👋&lt;/p&gt;

&lt;p&gt;I just released a tiny Ruby gem called callbacky that brings declarative lifecycle callbacks (like before and after) to your plain Ruby objects — no Rails dependency required!&lt;br&gt;
🚀 Why?&lt;/p&gt;

&lt;p&gt;Sometimes you need a clean way to separate setup, teardown, or side-effects from core logic — like service objects, workers, or POROs. Inspired by Rails-style callbacks, Callbacky gives you a lightweight way to do this with methods, procs, or blocks.&lt;/p&gt;

&lt;p&gt;✨ Features&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Define before / after callbacks per lifecycle event (e.g., :init)

Supports method names, lambdas, or inline blocks

Chainable and extensible

Works with plain Ruby — no magic, no monkey patches
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;💡 Usage&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MyService&lt;/span&gt;
  &lt;span class="kp"&gt;include&lt;/span&gt; &lt;span class="no"&gt;Callbacky&lt;/span&gt;

  &lt;span class="n"&gt;callbacky&lt;/span&gt; &lt;span class="ss"&gt;:before&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:init&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:prepare&lt;/span&gt;
  &lt;span class="n"&gt;callbacky&lt;/span&gt; &lt;span class="ss"&gt;:after&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:init&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="n"&gt;obj&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log_done&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="n"&gt;callbacky&lt;/span&gt; &lt;span class="ss"&gt;:after&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;:init&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;instance&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
    &lt;span class="n"&gt;instance&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;notify!&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;initialize&lt;/span&gt;
    &lt;span class="n"&gt;callbacky_init&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
      &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"Doing work..."&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;

  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;prepare&lt;/span&gt;    &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"Preparing..."&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;log_done&lt;/span&gt;   &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"Logging done"&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;notify!&lt;/span&gt;    &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"Notifying"&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🛠 Open Source &amp;amp; Contributions Welcome&lt;/p&gt;

&lt;p&gt;Check it out on GitHub 👉 github.com/pucinsk/callbacky&lt;br&gt;
If you find it useful or have suggestions, I’d love your feedback and PRs!&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>callbacks</category>
      <category>gem</category>
    </item>
    <item>
      <title>3 useful VS Code extensions for testing Ruby code</title>
      <dc:creator>Jokūbas Pučinskas</dc:creator>
      <pubDate>Fri, 08 Nov 2024 11:46:50 +0000</pubDate>
      <link>https://dev.to/pucinsk/3-vs-code-extensions-for-testing-ruby-code-f14</link>
      <guid>https://dev.to/pucinsk/3-vs-code-extensions-for-testing-ruby-code-f14</guid>
      <description>&lt;p&gt;As VS Code wins as the most used Ruby code editor in &lt;a href="https://railsdeveloper.com/survey/2024/#os-editors-servers" rel="noopener noreferrer"&gt;2024 Ruby on Rails Community Survey&lt;/a&gt; we are seeing more and more great tooling and extensions dedicated for Ruby appearing in VS Code extensions marketplace.&lt;/p&gt;

&lt;p&gt;In this short blog post, I’d like to share my 3 favorite extensions that provide shortcuts for the testing part of the programming cycle.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rails Run Specs
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=noku.rails-run-spec-vscode" rel="noopener noreferrer"&gt;Link to an extension&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Rails Run Specs provides commands which allow to run tests in a whole suite and file or by selected spec block.&lt;/p&gt;

&lt;p&gt;Commands can be conveniently executed by pressing keyboard shortcut or from commands menu (&lt;code&gt;cmd+shift+p&lt;/code&gt;). Everytime spec command runs it creates or reuses dedicated terminal session where you can see an output of running tests. &lt;/p&gt;

&lt;p&gt;It supports both &lt;a href="https://rspec.info/" rel="noopener noreferrer"&gt;RSpec&lt;/a&gt; and &lt;a href="https://github.com/minitest/minitest" rel="noopener noreferrer"&gt;Minitest&lt;/a&gt; as well as any other testing gem. There are flexible configurations options which allow to configure editor with needed testing tool.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuufmm8xav5v67ycpkxt4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuufmm8xav5v67ycpkxt4.gif" alt="Rails Run Specs demo" width="800" height="687"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Ruby Test Explorer
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=connorshea.vscode-ruby-test-adapter" rel="noopener noreferrer"&gt;Link to an extension&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a Ruby Test Explorer extension for the &lt;a href="https://marketplace.visualstudio.com/items?itemName=hbenl.vscode-test-explorer" rel="noopener noreferrer"&gt;VS Code Test Explorer&lt;/a&gt; extension.&lt;/p&gt;

&lt;p&gt;It allows to see all specs listed in an explorer view, run them by a few mouse clicks and quickly locate failures.&lt;/p&gt;

&lt;p&gt;Extension supports both RSpec and Minitest gems.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjempwu5rjosvxz7grw8l.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjempwu5rjosvxz7grw8l.gif" alt="Ruby Test Explorer demo" width="884" height="760"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Go To Test
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=Nautigsam.go-to-test" rel="noopener noreferrer"&gt;Link to an extension&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quickly toggle between code and spec files. This extension is programming language agnostic and it works just fantastic with Ruby projects.&lt;/p&gt;

&lt;p&gt;Extension provides keyboard shortcut to toggle between code and spec files. Loving it!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8gzkuzp119cakdkn92e8.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8gzkuzp119cakdkn92e8.gif" alt="Go To Test extension demo" width="686" height="760"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope that you'll find this list of extensions useful and interesting as I did! If you have your favorite testing extensions leave them in comment section below.&lt;br&gt;
Thank you for reading!&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>vscode</category>
      <category>extensions</category>
      <category>testing</category>
    </item>
    <item>
      <title>Ruby exceptions: tips &amp; tricks</title>
      <dc:creator>Jokūbas Pučinskas</dc:creator>
      <pubDate>Sat, 02 Nov 2024 14:18:58 +0000</pubDate>
      <link>https://dev.to/pucinsk/ruby-exceptions-tips-tricks-596c</link>
      <guid>https://dev.to/pucinsk/ruby-exceptions-tips-tricks-596c</guid>
      <description>&lt;p&gt;Exceptions are unexpected events that disrupt an application’s flow. Ruby’s exception-handling features make it easy to manage these errors, ensuring applications remain stable and user-friendly.&lt;/p&gt;

&lt;p&gt;Here's an example of common exception handling flow in Ruby:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;begin&lt;/span&gt;
  &lt;span class="n"&gt;do_something&lt;/span&gt; &lt;span class="c1"&gt;# may raise an exception&lt;/span&gt;
  &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="c1"&gt;# raises an exception&lt;/span&gt;
&lt;span class="k"&gt;rescue&lt;/span&gt; &lt;span class="no"&gt;ZeroDivisionError&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;
  &lt;span class="c1"&gt;# `ZeroDivisionError` exception handler&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;
  &lt;span class="c1"&gt;# If no exceptions were raised&lt;/span&gt;
&lt;span class="k"&gt;ensure&lt;/span&gt;
  &lt;span class="c1"&gt;# Code which always gets executed&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this article, I’ll share a few tips on effectively handling exceptions in Ruby to keep your applications running smoothly.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;fail&lt;/code&gt; with error
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;fail&lt;/code&gt; is a lesser-known keyword for raising errors in an application. However, it adds clarity to the code when you want it to explicitly fail and the program to exit.&lt;/p&gt;

&lt;p&gt;Let's see an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;begin&lt;/span&gt;
  &lt;span class="nb"&gt;fail&lt;/span&gt; &lt;span class="s2"&gt;"The weather is too bad for this code to work."&lt;/span&gt;
&lt;span class="k"&gt;rescue&lt;/span&gt;
  &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"I'll try tomorrow."&lt;/span&gt;
  &lt;span class="nb"&gt;exit&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, fail raises an error just like raise does. However, fail conveys a clearer intention from the developer for the application to fail.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;rescue&lt;/code&gt; with multiple exceptions
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;rescue&lt;/code&gt; statement shares simillar syntax to &lt;code&gt;case&lt;/code&gt; operator.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="n"&gt;foo&lt;/span&gt;
&lt;span class="k"&gt;when&lt;/span&gt; &lt;span class="no"&gt;Number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;Decimal&lt;/span&gt;
  &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"It is a number"&lt;/span&gt;
&lt;span class="k"&gt;when&lt;/span&gt; &lt;span class="no"&gt;String&lt;/span&gt;
  &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"It is a string"&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;begin&lt;/span&gt;
  &lt;span class="n"&gt;do_something&lt;/span&gt;
&lt;span class="k"&gt;rescue&lt;/span&gt; &lt;span class="no"&gt;NoMethodError&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;NameError&lt;/span&gt;
  &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"Method or variable is not defined"&lt;/span&gt;
&lt;span class="k"&gt;rescue&lt;/span&gt; &lt;span class="no"&gt;RuntimeError&lt;/span&gt;
  &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"Runtime error occured"&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This allows for clear handling of various error scenarios while maintaining readability in the code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Rescueing from &lt;code&gt;Exception&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;The Exception class is the base of Ruby's exception hierarchy. Therefore, when you rescue Exception, you are effectively rescuing from all &lt;a href="https://ruby-doc.org/3.3.5/Exception.html#class-Exception-label-Built-In+Exception+Classes" rel="noopener noreferrer"&gt;Ruby built-in exceptions&lt;/a&gt;, including its subclasses like SyntaxError, LoadError, and Interrupt.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;begin&lt;/span&gt;
  &lt;span class="n"&gt;do_something&lt;/span&gt;
&lt;span class="k"&gt;rescue&lt;/span&gt; &lt;span class="no"&gt;Exception&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="c1"&gt;# bad&lt;/span&gt;
&lt;span class="k"&gt;rescue&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="c1"&gt;# bad&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;code&gt;Exception#cause&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;In Ruby, we can always rescue and raise another exception, which is a common pattern. The &lt;a href="https://ruby-doc.org/3.3.5/Exception.html#method-i-cause" rel="noopener noreferrer"&gt;&lt;code&gt;Exception#cause&lt;/code&gt;&lt;/a&gt; method allows you to check if an exception was raised by another exception, and if so, it enables you to trace it back, making it easier to debug the code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;begin&lt;/span&gt;
  &lt;span class="k"&gt;begin&lt;/span&gt;
    &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;
  &lt;span class="k"&gt;rescue&lt;/span&gt;
    &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="no"&gt;RuntimeError&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;rescue&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;
  &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;class&lt;/span&gt;
  &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;cause&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;class&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="c1"&gt;# Output:&lt;/span&gt;
&lt;span class="no"&gt;RuntimeError&lt;/span&gt;
&lt;span class="no"&gt;ZeroDivisionError&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Current exception with &lt;code&gt;$!&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Ruby stores current exception in a &lt;code&gt;$!&lt;/code&gt; variable which you can access in a code or whilst in a debuggig session in console.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;begin&lt;/span&gt;
  &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="no"&gt;RuntimeError&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"It's hammertime"&lt;/span&gt;
&lt;span class="k"&gt;rescue&lt;/span&gt; &lt;span class="no"&gt;RuntimeError&lt;/span&gt;
  &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="vg"&gt;$!&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;message&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="c1"&gt;# Outputs:&lt;/span&gt;
&lt;span class="s2"&gt;"It's hammertime"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this short post, we explored several tips for effective exception handling in Ruby. Using fail for clear error signaling, managing multiple exceptions with rescue, and leveraging &lt;code&gt;Exception#cause&lt;/code&gt; for tracing errors are all strategies that enhance code readability and maintainability.&lt;/p&gt;

&lt;p&gt;Thank you for reading and see you next time 🚀&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>exceptions</category>
      <category>basic</category>
    </item>
  </channel>
</rss>
