Support for Windows Gemfiles

Page last updated:

This topic describes how the Ruby buildpack handles dependencies on Windows machines.

Windows Gemfiles

When a Gemfile.lock is generated on a Windows machine, it often contains gems with Windows-specific versions. This results in versions of gems such as mysql2, thin, and pg containing “-x86-mingw32.” For example, the Gemfile may contain the following:

gem 'sinatra'
gem 'mysql2'
gem 'json'

When you run “bundle install” with the above Gemfile on a Windows machine, it results in the following Gemfile.lock:

GEM remote: http://rubygems.org/
specs:
  json (1.7.3)
  mysql2 (0.3.11-x86-mingw32)
  rack (1.4.1)
  rack-protection (1.2.0)
  rack sinatra (1.3.2)
  rack (~> 1.3, >= 1.3.6)
  rack-protection (~> 1.2)
  tilt (~> 1.3, >= 1.3.3)
  tilt (1.3.3)
PLATFORMS x86-mingw32
DEPENDENCIES
  json
  mysql2
  sinatra

Notice the “-x86-mingw32” in the version number of mysql2. Since Cloud Foundry runs on Linux machines, this would fail to install. To mitigate this, the Ruby Buildpack removes the Gemfile.lock and uses Bundler to resolve dependencies from the Gemfile.

Note: Removing the Gemfile.lock will cause dependency versions to be resolved from the Gemfile. This could result in different versions being installed than those listed in the Gemfile.lock.

Create a pull request or raise an issue on the source for this page in GitHub