Free trial

How to run Engine Yard Local in CentOS 6.5

PrintEngine Yard is a platform as a service (PaaS) company that focuses on deployment and management of Ruby on Rails, PHP and Node.js servers in order to provide to customer a quick and simple way to deploy applications. They provide also a local version of Ruby on Rails server on Gentoo Linux so anyone can test how it works. I wanted to run the Engine Yard Local on CentOS 6.5 to test sample a Ruby application without the use of cloud services but I have faced some difficulties during deployment that I’ve been able to resolve and wanted to share it with you. This article shows all the steps to run Engine Yard Local on fresh install of CentOS 6.5 that I used for deployment.

Prerequisites to run Engine Yard Local:

  • VirtualBox 4.0, 4.1 or 4.2
  • Ruby 1.9.3
  • Rubygems


There are two main options how to install Virtualbox:

  1. using package downloaded from Virtualbox sites. This link refers to download page for VirtualBox 4.2.22 version and you should choose version ending with:
    VirtualBox-4.2.22-el6-1.i686.rpm  for 32bit OS
    VirtualBox-4.2.22-el6-1.x86_64.rpm  for 64bit OS
  2. using repository prepared for CentOS and other RHEL distributions. The repository can be set via
    cd /etc/yum.repos.d

    and VirtualBox 4.2.22 version installed by

    yum install VirtualBox-4.2

You also need to have installed Dynamic Kernel Support Module (DKMS) from RPMForge repository, which can be installed by:

rpmforge-release-0.5.3-1.el6.rf.i686.rpm  for 32bit OS
rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm  for 64bit OS

and for the DKMS install run:

yum --enablerepo rpmforge install dkms


There is a ruby in the official CentOS repository in version 1.8.7 but Engine Yard requires version 1.9.3 as it is written on Engine Yard Local page.

Prerequisites for Ruby

Before compiling and installing newer Ruby and Rubygems, it is also necessary to install some dependencies:

yum install openssl-devel zlib-devel

Note: These should be minimal dependencies to run Engine Yard Local, you can add another regarding your future requirements.

YAML parser

Optionally, you can install YAML lib which provides an option for Ruby to use a newer implementation of YAML parser (version 0.1.4). You will be getting the following warning message while using ruby, if you don’t install it:

/usr/local/lib/ruby/1.9.1/yaml.rb:84:in `<top (required)>':
It seems your ruby installation is missing psych (for YAML output).
To eliminate this warning, please install libyaml and reinstall your ruby.

This is how to install Psych YAML parser:

tar zxfv yaml-0.1.4.tar.gz
cd yaml-0.1.4

and with root privileges run

make install

Ruby itself

Download, compile and install Ruby (version 1.9.3 p484) is similar as previous steps:

tar zxfv ruby-1.9.3-p484.tar.gz
cd ruby-1.9.3-p484

and with root privileges run

make install

Verify that Ruby was succesfully installed by

ruby -v


As the Engine Yard Local is distributed as a Gem, you need to install RubyGems tool. You can download RubyGems (version 2.1.11) via:

tar zxfv rubygems-2.1.11.tgz
cd rubygems-2.1.11/

and with root privileges run

ruby setup.rb

Verify that RubyGems was successfully installed by

gem -v

Engine Yard Local gem

With all prerequisites met for Engine Yard Local, you can install it as written in documentation here (assuming root privileges):

gem install engineyard-local

Engine Yard Local example

You can try sample ruby application by downloading git repository

git clone git://
cd todo
ey-local up

Note: You might see an error message indicating wrong settings for base MAC address for eth0/NAT. This is a known issue, workaround is start “ey-local up” once again.

When ey-local up successfully finishes, you should be able to see ToDo example running at

Snímek obrazovky pořízený 2014-01-20 16:17:11


Snímek obrazovky pořízený 2014-01-20 17:46:00

If you see an error message instead of the ToDo application, you probably see some error messages at the end of the log too. These are given to stdout by ey-local up command. They look like:

[default] rake aborted!
[default] undefined method `create' for Psych::Visitors::YAMLTree:Class
[default] Tasks: TOP => assets:precompile:primary
[default] (See full trace by running task with --trace)
[default] rake aborted!
Command failed with status (1): [/usr/bin/ruby19 /usr/bin/rake assets:preco...]

Tasks: TOP => assets:precompile
(See full trace by running task with --trace

It seems that this happens when Ruby 1.9.3 is not compatible with Psych YAML parser so you need to switch back to Syck YAML parser. This incompatibility occurs in both cases no matter, if you installed it or not. There are two options how to solve it:

    1. add manually
      YAML::ENGINE.yamler = "syck" if RUBY_VERSION >= "1.9.2"

      right after

      Bundler.require(:default, Rails.env) if defined?(Bundler)

      in config/application.rb file

    2. OR apply patch to config/application.rb in downloaded example’s todo directory.
      Create new file e.g. engineyard.patch with content:

      --- config/application.rb    2014-01-20 11:45:50.856045465 +0000
      +++ config/application.rb    2014-01-20 11:45:32.680045487 +0000
      @@ -5,6 +5,7 @@
       # If you have a Gemfile, require the gems listed there, including any gems
       # you've limited to :test, :development, or :production.
       Bundler.require(:default, Rails.env) if defined?(Bundler)
      +YAML::ENGINE.yamler = "syck" if RUBY_VERSION >= "1.9.2"
       module Listr
         class Application < Rails::Application

      and apply the patch using:

      patch -p1 config/application.rb engineyard.patch

The last step is reboot the Gentoo rack machine to apply changes via

ey-local down
ey-local up


You should be able to run Engine Yard Local version and you can discover Engine Yard options on your local machine. You can customize deploying the machine using different Chef’s cookbooks and managing recipes and test your applications with EngineYard’s platform. Running on Engine Yard local environment might be a good alternative if you want to learn about underlying platform or if you want to develop your applications in an environment where internet connection might be an issue such as while traveling on your business trips.

engine yard system engineering

Leave a Reply

Related articles


Let’s make LLMs generate JSON!

In this article, we are going to talk about three tools that can, at least in theory, force any local LLM to produce structured output: LM Format Enforcer, Outlines, and Guidance. After a short description of each tool, we will evaluate their performance on a few test cases ranging from book recommendations to extracting information from HTML. And the best for the end, we will show you how forcing LLMs to produce a structured output can be used to solve a very common problem in many businesses: extracting structured records from free-form text.

Notiondipity: What I learned about browser extension development

Me and many of my colleagues at profiq use Notion for note-taking and work organization. Our workspaces contain a lot of knowledge about our work, plans, or the articles or books we read. At some point, a thought came to my mind: couldn’t we use all this knowledge to come up with project ideas suited to our skills and interests?

From ChatGPT to Smart Agents: The Next Frontier in App Integration

It has been over a year since OpenAI introduced ChatGPT and brought the power of AI and large language models (LLMs) to the average consumer. But we could argue that introducing APIs for seamlessly integrating large language models into apps developed by companies and independent hackers all over the world can be the true game changer in the long term. Developers are having heated discussions about how we can utilize this technology to develop truly useful apps that provide real value instead of just copying what OpenAI does. We want to contribute to this discussion by showing you how we think about developing autonomous agents at profiq. But first a bit of background.