Skip to content
Joshua Moody edited this page Jan 15, 2016 · 2 revisions

Ruby Versions

recommended => ruby 2.2   # or the most recent version
    minimum => ruby 2.0

We recommend you install and use a ruby manager on MacOS for several reasons:

  • Apple's version is always several steps behind the most recent version,
  • by default, Apple's version requires sudo to install gems,
  • the ruby version on your local machine should match the ruby version in CI, including the ruby version on the Xamarin Test Cloud,
  • everyone on your team should be using the same ruby version.

You should never install a gem with sudo.

Using sudo is inherently dangerous. Executing a gem install with sudo is even more dangerous because gems can execute code at install time. This means they could erase parts of your hard drive or publish sensitive information to the internet. Installing gems with sudo on MacOS can overwrite the pre-installed system gems which could cause internal MacOS and Xcode tools to fail.

Still not convinced? See what others have to say:

calabash-sandbox

If you are getting started with ruby and Calabash, we recommend the calabash-sandbox; it will get you up and running with Calabash in minutes.

Ruby managers on MacOS

The Calabash team at Xamarin uses both rbenv and rvm.

rbenv

rbenv is a system for managing ruby versions.

You can also install rbenv with homebrew.

rvm

rvm is another ruby management system.

There are many users who use rvm with success, but we have had some users report problems using rvm + Calabash iOS.

Tip - gems installing slowly?

$ gem source -r http://gems.rubyonrails.org
http://gems.rubyonrails.org removed from sources

Avoid installing documentation:

# Create a ~/.gemrc with the following:
install: --no-document --env-shebang
update:  --no-document --env-shebang

Tip - Use bundler

http://bundler.io/

Bundler maintains a consistent environment for ruby applications. It tracks an application's code and the rubygems it needs to run, so that an application will always have the exact gems (and versions) that it needs to run.

We recommend that you always use a Gemfile and bundler.