savory code and other culinary highlights

Mongorestore: No Reachable Servers

| Comments

When using mongodb’s mongorestore commandline tool, it failed with the message

Failed: no reachable servers

Strangely enough, it was working on my computer, but failed on my colleague’s.

Comparing Deeply Nested Structures

| Comments

For testing a JSON API response I recently had to compare two deeply nested structures. To do this programmatically would be quite a pain, so I wrote a gem which tests a prepared structure (imported JSON) against the output of my (unit test) code.

Screencasting With Ubuntu as GIF

| Comments

Sometimes I need to send someone instructions on how to use software.

Instead of fiddling with annotated screenshots, wouldn’t it be nice to just send an animated GIF via email? Also, I now can show off my struggles with Vim! ;)

Here’s a setup that I found on the internet and it works like a charm with my system (Ubuntu 14.04 LTS and xmonad).

Ruby 2.0 Not Compiling Due to Readline Error

| Comments

Ruby 2.0.0 didn’t compile anymore after reinstalling rbenv on my Ubuntu 14.04 system. The error message was only hinting at /tmp/

Inside the build log I found an error similar to this:

readline.c:1977:26: error: ‘Function’ undeclared (first use in this function)
     rl_pre_input_hook = (Function *)readline_pre_input_hook;

Integration Tests With Celluloid::IO, Part 2

| Comments

In the first post, we wrote an integration test setup for a Celluloid::IO application.

One remaining problem is that the tests are “absorbing” all exceptions that occur during worker execution, or are raising them some time later. This is because the workers can just crash internally and/or the worker thread is still running when the test is done.

Integration Tests With Celluloid::IO, Part 1

| Comments

While creating Celluloid based applications is more fun than you’d expect from multithreaded programming, testing them has some caveats.

Here’s how we did the test setup with MiniTest and as a bonus I’ll describe a hack to handle worker exceptions correctly in a second post