How to split config/routes.rb in Rails 4
Splitting Rails route definitions across multiple files can improve organization in larger apps. Rails::Engine and config.paths['config/routes.rb'] can load route files from config/routes/.
marco-polo improves your Rails console prompt
Displays the app name and Rails environment in the console prompt, reducing the risk of running commands in production by mistake.
Get the root class of an ActiveRecord STI hierarchy
base_class returns the top ActiveRecord STI class by walking up inheritance until an abstract class or ActiveRecord::Base is reached.
How to enable SSL in development with Passenger standalone
Local Rails development can serve both HTTP and HTTPS with Passenger standalone by enabling SSL and using a self-signed certificate.
Getting Sidekiq error "delay is defined by Active Record"
Active Record can conflict with Sidekiq's delay method when a model has a delay attribute. Sidekiq.remove_delay! disables it; Sidekiq.hook_rails! keeps Sidekiq methods prefixed.
Bootswatch: Paper
Free Bootstrap theme with a Material Design look for Rails apps. Sass and Less files simplify integration, while the CSS-only approach keeps the theme easy to replace.
List of Helpful RubyMine Shortcuts
RubyMine keyboard shortcuts speed navigation, multi-caret editing, refactoring, and file handling for everyday Ruby development tasks.
PostgreSQL: Be careful when creating records with specific ids
Manually assigning primary keys in PostgreSQL can leave sequences unchanged, causing duplicate-key errors on the next insert. Resetting the sequence prevents conflicts.
Non-blocking Asynchronous JSON.parse Using The Fetch API
Offloading expensive JSON.parse work from the main thread keeps fetch-based apps responsive and avoids blocking during large response processing.
Openstack: nova resize
Changing an OpenStack VM’s RAM, disk, or vCPU count requires nova resize and a matching flavor; the resize causes downtime and can take a long time.
Jasmine: Testing complex types for equality
toBe only checks reference identity; toEqual handles arrays, objects, dates, regular expressions, NaN, exceptions, and custom equality testers.
Mocking time in Jasmine specs
Control time in Jasmine tests with the built-in jasmine.clock() to fake timers and new Date() without adding SinonJS.
Pierce through Javascript closures and access private symbols
Accessing state hidden in JavaScript closures can simplify tests and let Jasmine spies mock private methods or inspect local variables.
Detecting N+1 queries with Bullet
Bullet monitors database queries during development and flags N+1s, unnecessary eager loading, and missing counter caches to improve application performance.
Rails 4.2 Foreign Key Support
Database constraints for comments and users help enforce referential integrity, but support is limited to certain adapters and can surface ActiveRecord::InvalidForeignKey errors.
Spreewald 1.2.11 fixes frequent "no alert open" errors on Chrome
Chrome updates can cause frequent no alert open errors in Capybara dialog tests. Spreewald 1.2.11 waits for browser dialogs before confirming them.
How to fix a corrupt (zsh) history file
Corrupted zsh history files trigger startup errors and can be rebuilt by extracting valid entries from the damaged history data.
Capistrano 3 has slightly changed its symlink implementation
Capistrano 3 symlinks linked directories using the full path, so public/system now points to shared/public/system instead of shared/system.
JavaScript events: target vs currentTarget
event.target points to the clicked descendant, while event.currentTarget points to the element handling the listener; currentTarget is usually the safer choice.
A commitment is not a guarantee - Pivotal Tracker
Teams can commit to quality software, but cannot guarantee outcomes they do not fully control.
How to capture changes in after_commit
after_commit callbacks lose access to unsaved change data when Rails clears dirty tracking at commit. Rails 5+ provides saved_change_to_attribute? and previous_changes for commit-time checks.
How to fix: iPad does not trigger click event on some elements
iPad tap handling can ignore delegated click events on some elements, especially table rows. Adding cursor: pointer or an onclick attribute makes them respond.
24 little known CSS facts
Little-known CSS properties and selectors affect outlines, typography, and pseudo-elements, with browser support varying across features.
The Complete Guide to Rails Caching
Caching in Ruby on Rails reduces repeated work and speeds up pages, but stale or fragmented cache data can hurt performance and correctness.