Using Docker for RubyGems projects

Sometimes I want to create a new gem or modify existing gems to extend/fix them. However, I do not want to install tons of additional development tools on my host machine for that. Recently, I created a shell script which creates an instant development environment on Docker for that. #!/bin/sh -e exec docker run --rm -it \ --workdir=/work \ -v $(pwd):/work \ -v=$HOME/.gitconfig:/root/.gitconfig \ -v=$HOME/.ssh:/root/.ssh \ -v=$HOME/.gem/credentials:/root/.gem/credentials \ ruby:${VERSION:-2.6.5} \ /bin/bash "$@" This is a deadly-simple wrapper for docker command to run a ruby container mounting minimum-required files. Just put this file under a directory whatever it is in $PATH list (For example, /usr/local/bin/rubyshell) and run rubyshell in a Ruby project. Then I can do Ruby things such as bundle.

Read more →

Creating an Active Job Adapter

Active Job adapter interface I’ve created an Active Job adapter to run my background jobs on Google Cloud Run via Google Cloud Tasks. Although it is the first time for me to create an adapter for Active Job, this is working very well so far. https://github.com/esminc/activejob-google_cloud_tasks-http Creating an Active Job adapter itself is not so hard. You can see that by exploring the repository above. In fact, Active Job adapters are required to implement only two methods: enqueue and enqueue_at. For example, let’s take a look at the implementation of Active Job Inline, which is one of the built-in implementations of Active Job.

Read more →

Sending FCM Push Notifications with Andpush Gem

Recently, I had migrated from GCM (Google Cloud Messaging) to FCM (Firebase Cloud Messaging) because GCM was ending its life. At first, I found fcm gem which supports FCM. I changed my application code to use the gem and I deployed the new version since it was working nicely on the staging. However, as time goes, I realized that FCM notification sometimes stops working when the application runs on multiple threads. And it’s turned out that the latest released version of fcm gem does not support multi-threaded applications as of today. That’s why I decided to use another library and that’s where Andpush gem comes into play.

Read more →

Running Desktop Applications on Containers

Docker is an important tool for running web applications in both production and development environments nowadays. Actually, it can also be used for running desktop applications. That means you can take advantage of Docker’s mobility even on the desktop. However, there are some tricks to make that work well. In short, you have to enable applications inside containers to use some resources on the host machine. Using X11 via Unix Socket As you may know, X11 originally supports remote use and it can be accessed via TCP or Unix Domain sockets. To use this function via Unix socket, mount /tmp/.X11-unix directory with docker’s --volume (-v) option.

Read more →

Testing Rails Application via Browsers with System Tests

I’m developing a small application which is built on Ruby on Rails, React and Relay. Since the project is based on my personal hobby and just a prototype, I preferred to write application codes rather than to write tests at first. However, as the application grows larger, I had to test the application manually every time when I make changes to make sure it doesn’t break other features. The lack of tests made development speed slower. So I decided to write automated tests.

Read more →

Gentaro "hibariya" Terada

Otakanomori, Nagareyama, Chiba, Japan
Email me

Likes Ruby, Internet, and Programming.