Talk on Tues: Moving to HTTPS
I'll be giving a talk at Sydney ALT.NET on Tues: After recently moving the Getup site fully to HTTPS, James will share with you security pitfalls, the justification for the move from mixed HTTP/HTTPS,...
View ArticleMoving to HTTPS, Rails force_ssl and Rollback
Background We recently moved the Getup site from mixed HTTP/HTTPS to completely HTTPS. The primary driver was to ensure that sessions were never sent in plain text over the wire, to avoid session...
View ArticleBigDecimal fix for Rails 4 with Ruby 2.4
Rails 4.2.9 works well with Ruby 2.4.2 except for an incompatible change with invalid decimal values and String#to_d. BigDecimal was changed in 1.3.0 (which ships with Ruby 2.4) to throw an exception...
View ArticleRails serving big password protected files – Capistrano Rsync & X-Sendfile
Say you’ve got a few app servers, and you want to serve up some largish files from your rails app (eg, pdfs) behind a login screen. Well, you could put them on s3 and redirect the user to s3 with...
View ArticleFixing ‘Invalid query parameters: invalid %-encoding’ in a Rails App
Sometimes users manually edit query strings in the address bar, and make requests that have invalid encodings. Unfortunately Rails does not handle this neatly and the exception bubbles up. Eg,...
View ArticleImporting Excel 365 CSVs with Ruby on OSX
Up until 2016, Excel for the Mac provided a handy CSV export format called “Windows CSV”, which used iso-8859-1/Windows-1252 encoding. It was reliable, handled simple extended characters like degree...
View ArticleRails: Removing error divs around labels
Rails makes it very easy to style fields with errors on your form. Unfortunately, the same error DIV with class ‘.field_with_errors’ is applied around labels, as well as inputs/checkboxes/selects. This...
View ArticleRails ActiveModel, with nested objects and validation
So maybe you have a model that is not backed by a database table? ActiveModel is meant to cover this scenario and give you the usual ActiveRecord goodness and validation. But the story gets much harder...
View ArticleChatGPT Programming Test
I was writing a little function in Ruby and thought I’d ask ChatGPT to have a go at it. It is easy to read, explicit, and fairly idiomatic Ruby (though not concise). Not the most performant...
View ArticleSolving mysterious null values in Mysql date columns, stored by a Rails app
A few months ago, when I was doing some detailed database backup and restore testing, I discovered there were, out of millions of records which had user-entered dates, a handful that had null dates in...
View Article