Jean-Philippe Boily / @jipiboily

Rails developer. I say things. I write things.

Introducing early version of Fourchette: test PR against a fork of your Heroku app

Jean-Philippe Boily

As some of you might have noticed, I recently changed job and I am now working at Rainforest QA (check us out if you do anything web-related!). Why am I telling you that? Because I am introducing you the result of the test project I made before joining the fine folks of Rainforest: Fourchette.

What is Fourchette?

"Your new best friend for isolated testing environments on Heroku.".

Basically, when you create a new PR on GitHub for your project, Fourchette will fork your Heroku app (QA, staging or prod, whatever you want!) and create a live copy of your PR for you to test. Isn't that amazing? I think it is!

Early version: help me test it

It is a very early version but I would love it if some people could try it out, help me fix bugs and maybe even write some specs (there are very few right now).

Want to give it a shot? Head this way:

If you love working on this kind of stuff too, I work on it as part of my day job and we're hiring! ;)

Read more

Hey Rubygems, do not include your stuff implicitly (and don't class_eval Class!)

Jean-Philippe Boily

A lot of great gems do this: they automatically include themselves into ActiveRecord::Base, or even worse, into Object or Class directly. I am looking at you, state_machine. In some cases, it is enough for me to not use it (still looking at you, state_machine).

I love people giving their time & code, I really do and appreciate the work. That said, please, let me include your awesome work explicitly where I want/need to.

Having code that speaks by himself and is clear in it's intention is worth a whole lot. Code where youexplicitly include modules is much more clear and easy to maintain too! Using gems that play it nicely and don't pollute anything else that is not required is wayyy better in my opinion.

I prefer:

class DockerCreator include MyAwesomeStateMachine states :created, :booting, :stopping, :stopped, :exploded, :deleted, :archived transition from: :created,         to: [:booting,:exploded, :deleted, :archived] transition from: :booting,         to: [:...
Read more

From zero to fully working CI server in less than 10 minutes with Drone & Docker

Jean-Philippe Boily

What is Drone? The official description is: "Drone is a Continuous Integration platform built on Docker".

What is Docker? Again, official description is :"Docker is an open-source project to easily create lightweight, portable, self-sufficient containers from any application".

10 minutes. This is all you need. In fact, there is an extra buffer in those 10 minutes to get your configuration working.

10 minutes is by order of magnitude less time than it would take you to get a Jenkins server up & running. I have never been a fan of Jenkins, and probably won't ever be, but let's keep this for another post, maybe.


We will assume that you have a Ubuntu 13.04 (64 bit) server with a routable IP or address. On Digital Ocean, which I love (referral here, thanks!), you can even have a VPS pre-built with Docker, 0.8 as of time of writing.

You can also use a Ubuntu 12.04 64 bit box in theory for Drone.

Your application needs to be hosted on GitHub. BitBucket coming soon apparently, but...

Read more

Monologue 0.3.0 and monologue-markdown released

Jean-Philippe Boily

I have just pushed to Rubygems the new versions of Monologue and monologue-markdown.

New to Monologue?

What is Monologue you may ask? Legitimate question! It is a barebone blog engine for Rails. It is built as a Rails engine and with a focus on keeping very few dependencies to ease it's use in your project. You can also use monologue-markdown which will replace the default editor with a simple Markdown editor.

For more information on how to use it, you can see the GitHub repo. Here is the branch for the current 0.3.X releases:

Give it a shot. Feel free to contribute, be it via a PR or simple feedback. Contributing will make you feel happy!

Already using Monologue?

Look at the upgrade steps. IMPORTANT: if you use monologue-markdown, you need to install monologue-markdown's migrations BEFORE the ones from the new version. Monologue migrations are removing a table that monologue-markdown needs for it's own data migration.

See the upgrade...

Read more

Install Dokku + PostgreSQL with Docker for your Rails app (or whatever else, almost)

Jean-Philippe Boily

The plan with that blog post, which is more of a step-by-step thing where I won't explain a lot of things, but do it, is to have a VM with Dokku installed where you can push your app built with one of the supported language (by default:Ruby, Node.js, Java, Play!, Python, PHP, Clojure, Go, Dart) and run it with a PostgreSQL 9.1 server in it's own Docker container. I'll assume Rails for a few Rails specific steps, but you can skip those if you are not a Rails person.

What are Dokku and Docker?

I started to play withDokkuand Docker a few days ago. I heard about it before, but playing with it is just enlightening. Same for Dokku. Those are awesome pieces of software. Docker is a MAJOR game changer. What is it? Here is the official description:

"Docker is an open-source project to easily create lightweight, portable, self-sufficient containers from any application. The same container that a developer builds and tests on a laptop can run at scale, in production, on VMs, bare metal, OpenStack...

Read more