Can’t install RMagick 2.13.1. Can’t find Magick-config

Email this to someoneShare on Google+Share on FacebookTweet about this on TwitterShare on LinkedIn

Problem

You are trying to install rmagick in an Ubuntu 12.04 virtual box, but you get the following error:

Solution

Make sure you install both the imagemagick and the libmagickwand-dev packages with either apt-get :

or in a puppet script as:

$rvm_path (/home/ubuntu/.rvm/) does not exist. error

Email this to someoneShare on Google+Share on FacebookTweet about this on TwitterShare on LinkedIn

Problem

When you want to use the capistrano recipe to deploy to a vagrant virtual box as described in ‘Deploying Rails’, and after you have corrected the rvm_path as described here, you get the following error message:

Solution

Make sure that after adding the rvm_path add also the following to the deploy.rb file, since rvm is installed system wide.

Suggestion from here.

.rvm/bin/rvm-shell: No such file or directory error

Email this to someoneShare on Google+Share on FacebookTweet about this on TwitterShare on LinkedIn

Problem

When trying to set up the capistrano deploy recipe to deploy to the vagrant virtual box as described in ‘Deploying rails’, you get the error:

when you have installed rvm system wide on the virtual box.

Solution

Make sure that you add the following into your deploy.rb file to set up the path for rvm:

Solution taken from here

sudo: puppet: command not found – when trying to use puppet with rvm in aws

Email this to someoneShare on Google+Share on FacebookTweet about this on TwitterShare on LinkedIn

When trying to use the

command in a aws instance to follow the instruction from ‘Deploying Rails’, the following error complains that the puppet command is not found, like:

After some searching and having a look at the blog post here and using the rvm notes in the aws instance and looking at this:

It seems that for security reason the sudo command resets the path in the system.

You can actually see that this the case by running the command to display the path of the normal user:

and the corresponding one for the sudo:

So a workaround to make it work is to add your group into the exemptions group in the visudo file, which means editing the visudo file:

and adding the group that your user you are working with belongs to:

Writing a Passenger Module for Puppet – Vagrant

Email this to someoneShare on Google+Share on FacebookTweet about this on TwitterShare on LinkedIn

Following the steps described in the “Deploying Rails Applications” book and using the currently latest puppet installation described here, the actual puppet files had to be modified slightly in order to make it work as expected.

The main issues requiring the changes were as follow:

  • System wide rvm installation – different paths, and the use of the rvmsudo command instead of sudo
  • Use of latest puppet gem (3.0.1) – ruby 1.9.3 is supported
  • Use of Debian/Ubuntu system – different way of configuring passenger with apache2

So the full file for the passenger module (puppet/modules/passenger/manifests/init.pp) is:

Going through the file one of the first things to notice is the declaration about the “apache2-prefork-dev” package installation

The reason for this package, is that when trying to compile the passenger apache module (passenger-install-apache2-module), the script will complain that the following packages are missing:

By installing the first of the packages (apache2-prefork-dev) the other two are installed automatically as dependencies.

NOTE In trying to install it in an Ubuntu AMI image in AWS EC2 there is also an additional package requirement because the installer complains about:

So there is the additional package added as:

Further down there are two file resources named “passenger_conf” and “passenger_load”.
Looking at the structure in debian for the apache2 configuration it seems that apache2 in debian needs two different files for each module that can be loaded one with named as module.conf and another as module.load to be placed into /etc/apache2/mods-available.

So we can create these two files and placed them in the files folder, as:

puppet/modules/passenger/files/passenger.conf

and, puppet/modules/passenger/files/passenger.load

Which you can actually see if you compile manually the passenger apache2 module as they are described in the output on successful compilation:

Finally the last section of the init.pp file enables the passenger module with the a2enmod apache command:

A couple of useful apache2 commands when testing are:

  • To test what modules are availble for loading: If run after creating the two passenger files passenger.conf and passenger.load, then the passenger module should appear in the list
  • To see the currently enabled modules: Which again if it is run after the passenger modules has been enabled with a2enmod passenger then it should show an entry with

Could not find puppet (>= 0) amongst [] (Gem::LoadError)

Email this to someoneShare on Google+Share on FacebookTweet about this on TwitterShare on LinkedIn

Problem

When you try to apply the puppet configuration into a vagrant box and using systemwide rvm installation (if you follow the instructions here), you have the following error:

Solution

Use rvmsudo instead of sudo to make sure that the paths are correct:

Vagrant – rvm – ruby – puppet installation instructions

Email this to someoneShare on Google+Share on FacebookTweet about this on TwitterShare on LinkedIn

Problem

In order to install a vagrant box with rvm and puppet following the examples in the ‘Deploying Rails’ book, the updated steps needed are described below.
The two main differences are a) rvm system wide installation as recommended here, and b) the puppet 3.0.1 version support of ruby 1.9.3 here

Solution

So below are the steps followed to make it work.

  1. Remove system ruby
  2. Remove vagrant_ruby.sh script as it adds a path that no longer exists:
  3. Install rvm with system wide installation:
  4. Add vagrant user and any other additional user to the rvm group:
  5. Exit and login back in to install ruby 1.9.3-p327 (current)
  6. install necessary ruby dependencies suggestest by previous command:
  7. Creat a gemset to be used with the desired rvm ruby version:
  8. Use the created gemset to install puppet gem:
  9. Install puppet as the vagrant user and NOT as sudo:
  10. install the puppet user and group as per book instructions:
  11. Optionally create a puppet directory to put manifests and modules and create a .rvmrc file to use specified gemset, by adding the following line to puppet/.rvmrc:
  12. use rvmsudo instead of sudo to apply the puppet scripts:

javascript runtime gem required for cucumber tests with rails

Email this to someoneShare on Google+Share on FacebookTweet about this on TwitterShare on LinkedIn

Problem

According to the ‘Cucumber book’ the gems required to start using cucumber with a rails application are the following:

On the most recent rails version (currently 3.2.9) the gems need to be updated and also include the javascript runtime gem ‘therubyracer’

Solution

The following gems are working with Rails 3.2.9

You can then run the

command to generate the files and folders necessary for cucumber.