Returning an empty ActiveRecord scope
none returns an empty ActiveRecord::Relation for default objects and other cases where no records should match, with a fallback initializer for older Rails versions.
When Sass-generated stylesheets print a Encoding::CompatibilityError
Sass-generated stylesheets can surface Encoding::CompatibilityError after a Rails and Ruby upgrade, often from stale cache files or mismatched UTF-8 and ASCII-8BIT encodings.
Reveal the indexes of an ActiveRecord table
ActiveRecord::Base.connection.indexes(:table_name) returns the database indexes defined for an ActiveRecord table, useful for checking schema performance and uniqueness constraints.
CoffeeScript: How to instantiate a class with an attributes hash
CoffeeScript classes can initialize instance properties directly from an attribute hash, similar to ActiveRecord-style mass assignment. constructor: ({ @name, @email }) -> binds fields automatically.
Sending raw JSON data to a member action in a controller spec
Rails 4 controller specs can send raw JSON in a member action request by passing the JSON body before the route parameters.
HTML5: Allow to choose multiple files with a vanilla file picker
Native file inputs can accept several uploads at once with multiple, but server parsing usually needs array-style names and custom Rails adaptation.
Angular Filters
Useful AngularJS filters for fuzzy string search and formatting values such as percentages.
Tagging in Rails 4 using Postgres Arrays
Store multiple labels in one field and query records by any or all of them with PostgreSQL array operators and a GIN index in Rails 4.
Iterate over any enumerable with an index
Iterating with a position counter helps rank or label items from any enumerable, including find_each and map, by chaining with_index to the enumerator.
rails/activeform
Alternative form objects for Rails may fit better than model-based validation and could become part of Rails 5.
Wrapping Your API In A Custom Ruby Gem
Packaging API bindings as a custom Ruby gem makes reuse and distribution easier, with tests recording HTTP interactions through VCR.
How to fix: Font too small when reading e-mails in Thunderbird
Plain-text e-mails in Thunderbird can ignore custom font settings because fonts are stored per character encoding, so some messages still appear tiny or default.
Backup an entire website using wget
Copying a whole website for offline browsing is simple with wget; recursive fetching and link conversion make local viewing possible.
pdfkit/wkhtmltopdf: When a header is invisible
header_html and footer_html can stay invisible in PDFKit and wkhtmltopdf unless the header or footer HTML starts with <!doctype html>.
Eager-loading polymorphic associations
Polymorphic eager loading avoids n+1 queries, but includes can fail when ordering or filtering on joined tables; explicit joins or preload keep loading efficient.
Rails 4.1+: New locale files require a Spring restart
Rails 4.1 development can ignore newly added I18n YAML files because Spring caches the load path; restarting Spring makes new translations appear.
Pete Hunt: React - Rethinking Best Practices
React.js shifts UI development toward reusable components and declarative rendering, reducing the complexity of manual DOM updates.
Use a Bash function to alias the rake command to Spring binstubs or "bundle exec" fallback
A Bash function can route rake to bin/rake when Spring binstubs exist, otherwise to bundle exec rake, speeding Rails 4.1+ and avoiding version conflicts on older apps.
Linux: Running a program with a different locale than your default
Run a command with a different locale when scripts or output parsing need English labels or predictable text. LC_ALL, LANG, and locale -a control and list available locales.
How Exchange handles multipart/alternative emails
Exchange can discard the plaintext part of multipart/alternative email, leaving only HTML in normal mail accounts and complicating debugging.
Change the existing order of an ActiveRecord scope
reorder replaces an existing order clause in an ActiveRecord relation, making it easy to change sort order without rebuilding the query.
The Curious Case of the Flip-Flop
Ruby’s flip-flop operator is obscure and rarely useful, often adding confusion rather than clarity. Recognizing it helps when reading unfamiliar code.
Using rbenv on Ubuntu 18.04+
Set up rbenv on Ubuntu 18.04+ with custom plugins and build dependencies to manage multiple Ruby versions reliably.
Perform Sidekiq jobs immediately in development
Run Sidekiq jobs synchronously in development to avoid a separate worker process and benefit from code reloading.