Tagged logs in Rails/ActiveSupport
10+ years most with Ruby on Rails and JavaScript frontend and some Go. My first language is C for 3 years in university.
Search for a command to run...
10+ years most with Ruby on Rails and JavaScript frontend and some Go. My first language is C for 3 years in university.
No comments yet. Be the first to comment.
I recently updated from Slim template to ERB to use Herb (Thanks Marco). I had to update a test that was very strict on the format. I realized that Capybara::Node::Simple doesn’t provide a selector for regex. The page object doesn’t have a match? met...

It is as simple as: rustup completions zsh > ~/.zfunc/_rustup rustup completions zsh cargo > ~/.zfunc/_cargo With a TAB you get the auto-complete or the options available: ❯ cargo b b -- alias: build bench -- Execute all benchmarks of a local ...
Let’s not re-write a good article, go to: https://joyofrails.com/articles/mastering-custom-configuration-in-rails I mostly used config.x configuration that loads a yaml file with config_for that do the multi-environment by default: module YourApp c...
No need to re-write the wheel, let me redirect to this great article from Lily Reile. Obviously still up-to-date and really useful as the official Rails doc is mostly showing the value before and after. https://lilyreile.medium.com/rails-6-1-new-fram...
I came around to update Appsignal gem to the new major version of Appsignal released at the end of August 2024: https://rubygems.org/gems/appsignal/versions/4.0.0 The upgrade was smooth. The real change for my application was to remove the parameter ...
It's from Rails' ActiveSupport to prepend automatically the logs with a parameter.
https://api.rubyonrails.org/classes/ActiveSupport/TaggedLogging.html
Rails.logger.tagged("background_job_number_1") do
Rails.logger.error("Thing went wrong for user XXX")
end
#=> [background_job_number_1] Thing went wrong for user XXX
It's very useful in many cases, specially in a background system or a shared code that method:
def shared_method
if true
Rails.logger.info("User XXX: done")
else
Rails.logger.error("User XXX: failure")
end
end
def user_update_flow
Rails.logger.tagged("user_update_flow") do
shared_method
# Log: [user_update_flow] User XXX: done
end
end
def user_create_flow
Rails.logger.tagged("user_create_flow") do
shared_method
# Log: [user_create_flow] User XXX: done
end
end
In that example, depending on the caller, the logs will be prepend with the expected tag or tags.
Feel free to shared and comment.