All Posts

Page 5 of 21

Use Foundation data attributes in a React functional component

I’ve been porting some previously server-rendered Rails templates to instead sit within a React application. This particular application uses Foundation Sites for base styles, and uses some of Foundation’s components which use Javascript to function - mostly basic stuff like data-dropdown, data-accordion, data-tabs. Foundation (still) uses jQuery for setting up these elements, and by default, initializes based on the ready...

What happens when I run 'rake db:migrate' in Ruby on Rails?

This post is written stepping through the most recent stable branch of Rails on Github: 6-1-stable. It may not remain up to date. Reading time: about 20 minutes Skip table of contents How is the ‘db:migrate’ rake task defined? The Rails gem includes ‘activerecord’ as a gem dependency: The activerecord gem adds it’s own ‘lib/` directory to Ruby’s load path:...

Preview Devise mailers

I use ActionMailer::Previews whenever I am implementing a transactional email. They’re a super handy way of working with email development, and I’ve even enabled them in UAT environments before so clients and designers can check the email easily. In many apps, nearly all the transactional email is actually sent by Devise, so I wanted to set up a ActionMailer preview...

Docker: You must use Bundler 2 or greater with this lockfile

Ever seen the error “You must use Bundler 2 or greater with this lockfile.” trying to build a Docker image from a Dockerfile that uses an older Ruby version? Even though you are gem installing the correct version of Bundler? It turns out that the Ruby Docker images set an environment variable called BUNDLER_VERSION, which Bundler will always try to...

Strip newlines from terminal output

Every so often I will need to take some kind of key file - like a PGP key, SSH, OpenSSL, that kind of thing, and be able to paste it into a one-line text entry somewhere. Maybe a .env file, or shell script, or some piece of infrastructure that just accepts a text field as the input (like CI configuration)....

Inspect zip file contents

If you’ve got a large zipfile, or just a badly named one and you’d like to quickly take a peek at what’s inside it, there’s a handy flag that can be passed to the unzip utility (apt install unzip): unzip -vl path_to_zip.zip This yields an output like: root@224cb547fae0:/usr/src/app# unzip -vl spec/fixtures/example.zip Archive: spec/fixtures/example.zip Length Method Size Cmpr Date Time CRC-32...

See recipients of a GPG encrypted message

gpg --list-only $infile e.g. gpg --list-only test.txt.gpg This command outputs recipient info, including recipient key ID and details if known: With an empty keyring (no public keys imported): gpg: encrypted with RSA key, ID 70F28839 With a populated keyring (public key of recipient imported): gpg: encrypted with 4096-bit RSA key, ID 70F28839, created 2018-05-29 "Josh McArthur <[email protected]>"

Cool utilities I've discovered this weekend

bat bat is cat with syntax highlighting, but is still compatible with pipes, etc. Really neat. I like the filename header. Github: https://github.com/sharkdp/bat jira A CLI for Jira. Maybe it’ll be faster than using the web interace??? Regardless, it supports a fancy config loading system that looks like I can configure it as part of my tmux setup to pop...

UNIX find case insensitive

I use the find all the time to (unsurprisingly), find files or directories I’m looking for. I prefer it to any UI built into my OS (currently Ubuntu, but all OSes seem to have this kind of thing - Alfred/Spotlight/Start Menu etc), because I usually know roughly where I’m looking, and I can be declarative about what I’m looking for...

My favourite HTTP client

It’s 2019. I’m writing code that needs to communicate with other APIs all the time. The code I post below reflects a snapshot of my current template API client. If I need to commuicate with a third-party in Ruby, I’m using this class. require "ostruct" class MyApiClient class Error < StandardError; end def initialize(configuration=nil, stubs=nil) @configuration = configuration || Rails.application.config_for(:my_api)...

Page: 5 of 21