Gatekeeping: Guide for gatekeeper
Project code is reviewed before staging to catch client rejections early and keep changes maintainable. Gatekeepers approve or reject merge requests and decide whether a review is needed.
Rails: Flagging all cookies as secure-only to pass a security audit
Secure cookies are often required by audits even when a Rails app already uses HTTPS and HSTS. A middleware can add the Secure flag to server-set cookies automatically.
babushka: test-driven sysadmin
The idea is this: you take a job that you'd rather not do manually, and describe it to babushka using its DSL. The way it works, babushka not only knows how to accomplish each part of the job, it also knows how to check if each part is already done. You're teaching babushka to achieve an end goal with whatever runtime conditions you throw at it, not just to perform the task that would get you there from the very start.
SAML Single Logout (SLO)
SAML logout can be initiated by the service provider or identity provider, with browser redirects or backchannel POSTs; devise_saml_authenticatable needs specific Rails and Keycloak logout handling.
Reflective Surface ยป Tests: Pragmatism or ideology?
The argument that using tests is a ideologic waster of time fails when one considers how it can help to insure architectural decisions.
Should I test for translated strings?
I brought up the question whether tests should call the translation API when checking for the presence of a string.
Alex Miller - Unit tests are a drop cloth
Unit tests are to refactoring like a drop cloth is to painting. Both feel like more work at first but ultimately save you time by allowing you to move faster.
How to test a confirm dialog with Cucumber? - Stack Overflow
Seems like there's no way to do it in Capybara, unfortunately. But if you're running your tests with the Selenium driver (and probably other drivers that support JavaScript), you can hack it
How to: Benchmark an Active Record query with a Ruby script
Benchmarking Active Record queries needs repeated runs and cache clearing to measure realistic PostgreSQL performance; a Ruby script can report percentile timings.
RSpec: Leverage the power of Capybara Finders and Matchers for view specs
View specs can stay fast and readable by querying rendered HTML with Capybara finders and matchers instead of relying on heavier request or feature specs.
RSpec: Composing a custom matcher from existing matchers
Compose a custom RSpec matcher from existing matchers to reduce repeated expectations and keep failure messages informative.
Gatekeeping: Guide for developer
Developer workflow for review-gated changes in Linear and GitLab, with branch, merge, reject, and staging steps to reduce client rejections.
How to push to Git without running CI on GitLab CI, GitHub Actions, or Travis CI
Git pushes can trigger unwanted CI jobs on GitLab, GitHub Actions, or Travis CI. Skip runs with commit-message flags or GitLab push options.
Pitfall: ActiveRecord callbacks: Method call with multiple conditions
Conditional after_save callbacks can silently lose earlier :if conditions when the same method is registered twice. Combine predicates or move the logic into the callback.
Configuring ActionMailer host and protocol for URL generation
ActionMailer URL generation fails without a configured host and protocol. Rails can use hardcoded defaults or derive them from the request for mailers sent outside the request cycle.
RSpec: How to turn off partial double verification temporarily
RSpec partial double verification blocks stubbing helper methods that come from Rails controllers; without_partial_double_verification or a spec config can disable it temporarily.
How to simulate limited bandwidth in Google Chrome and Firefox
Slow network conditions can be reproduced for web app testing with browser devtools or trickle, revealing issues on mobile and other constrained connections.
Using the Truemail gem to validate e-mail addresses
Email address validation can catch invalid sign-ups before they reach your app. Truemail offers regex, MX, and SMTP checks, with MX as the practical middle ground.
How to turn images into inline attachments in emails
External images in emails can fail in some clients; inline attachments with Rails and attachments.inline keep images visible, but turn messages into multipart emails and use content IDs.
RubyMine: Find and Replace with Regex (Capture Groups and Backreferences)
Regex find-and-replace in RubyMine uses capture groups and backreferences to rewrite quoted text, URLs, and old RSpec syntax safely.
Rails: Looking up constants by their name string
Rails constantize and safe_constantize turn strings into constants, but untrusted input can resolve dangerous classes; validate with an allowlist first.
How to run a small web server (one-liner)
Quickly serve a local folder for testing, or boot a Rack app, with one-line commands in Ruby, Python, Passenger, or Puma; HTTPS is possible too.
Isolate Side Effects in Ruby
Side effects are necessary but make Ruby code harder to test and reason about; isolating them reduces coupling and keeps core logic predictable.
Standalone Cucumber Test Suite
Sometimes you inherit a non Rails or non Rack based web app such as PHP, Perl, Java / JEE, etc. I like using cucumber for functional testing so I put together this project structure to use as a starting point for testing non Ruby web based applications.