title: How can I force a bundle install on OpenShift Online when my RAILS_ENV is set to development?
body: <p>I have a Rails app on OpenShift Online that I'm trying to setup with <em>RAILS_ENV</em>=<strong>development</strong> as opposed to the default env of <strong>production</strong>. The idea being later on I'll add test, staging and production domains.</p>
  
  <p>My problem is that because the env is set to <strong>development</strong> the OpenShift process that runs when I do a <em>git push</em> says it's skipping "bundle install":</p>
  
  <pre><code>remote: NOTE: Skipping 'bundle install' because running in development mode.
  </code></pre>
  
  <p>I got it to do the <em>bundle install</em> by setting <em>RAILS_ENV</em> to production <strong>temporarily</strong>.</p>
  
  <h2>Is there a way to <strong>force</strong> a <em>bundle install</em> in the OpenShift Online environment when running in <strong>development mode</strong>?</h2>
  
  <p><strong>UPDATE:</strong> 
  <br />
  Tried forcing a <em>bundle install</em> via <em>.openshift/action_hooks/pre_build</em>. Getting <strong>Gemfile syntax error</strong> during <em>pre_build</em> hook. <em>Gemfile</em> works locally and on OpenShift when using RAILS_ENV = production.</p>
  
  <h2>Gemfile</h2>
  
  <pre><code>source 'https://rubygems.org'
  
  gem 'rails', '4.1.4'
  
  ### OpenShift Online changes:
  
  # Fix the conflict with the system 'rake':
  gem 'rake', '~&gt; 0.9.6'
  
  # Iron.io gems
  gem 'iron_mq'
  #gem 'iron_worker_ng'
  
  # Support for databases and environment.
  # Use 'sqlite3' for testing and development and mysql and postgresql
  # for production.
  #
  # To speed up the 'git push' process you can exclude gems from bundle install:
  # For example, if you use rails + mysql, you can:
  #
  # $ rhc env set BUNDLE_WITHOUT="development test postgresql"
  #
  
  group :test do
    gem 'sqlite3'
    gem 'minitest'
  end
  
  group :development, :test do
    gem 'thor'
  end
  
  # Add support for the MySQL
  group :development, :production, :mysql do
    gem 'mysql2'
  end
  
  ### / OpenShift changes
  
  # Use SCSS for stylesheets
  gem 'sass-rails', '~&gt; 4.0.3'
  # Use Uglifier as compressor for JavaScript assets
  gem 'uglifier', '&gt;= 1.3.0'
  # Use CoffeeScript for .js.coffee assets and views
  gem 'coffee-rails', '~&gt; 4.0.0'
  # See https://github.com/sstephenson/execjs#readme for more supported runtimes
  # gem 'therubyracer',  platforms: :ruby
  
  # Use jquery as the JavaScript library
  gem 'jquery-rails'
  # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
  gem 'turbolinks'
  # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
  gem 'jbuilder', '~&gt; 2.0'
  # bundle exec rake doc:rails generates the API under doc/api.
  gem 'sdoc', '~&gt; 0.4.0',          group: :doc
  
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring',        group: :development
  
  # Use ActiveModel has_secure_password
  # gem 'bcrypt', '~&gt; 3.1.7'
  
  # Use unicorn as the app server
  # gem 'unicorn'
  
  # Use Capistrano for deployment
  # gem 'capistrano-rails', group: :development
  
  # Use debugger
  # gem 'debugger', group: [:development, :test]
  </code></pre>
  
  <p><br /></p>
  
  <h2>.openshift/action_hooks/pre_build</h2>
  
  <pre><code>#!/bin/bash
  # This is a simple script and will be executed on your CI system if
  # available.  Otherwise it will execute while your application is stopped
  # before the build step.  This script gets executed directly, so it
  # could be python, php, ruby, etc.
  
  if [[ "$RUBY_VERSION" == "1.8" ]]; then
    echo "ERROR: This quickstart is not compatible with Ruby 1.8"
    echo "ERROR: Please use ruby-1.9 or ruby-2.0 application type."
    exit 1
  fi
  
  if [[ "$RAILS_ENV" == "development" ]]
  then
    echo "Forcing bundle install for environment: $RAILS_ENV"
  
    pushd $OPENSHIFT_HOMEDIR/app-root/repo &gt; /dev/null
    bundle install --path ./vendor/bundle
    popd &gt; /dev/null
  fi
  </code></pre>
  
  <p><br /></p>
  
  <h2>Output from "git push" to OpenShift Online app</h2>
  
  <pre><code>remote: Stopping MySQL 5.5 cartridge
  remote: Ruby cartridge in development mode, skipping stop...
  remote: Force clean build enabled - cleaning dependencies
  remote: Building git ref 'master', commit 5c3182d
  remote: Forcing bundle install for environment: development
  remote: Gemfile syntax error:
  remote: /var/lib/openshift/540306395973ca6dc30006bc/app-root/runtime/repo/Gemfile:56:
  remote: syntax error, unexpected ':', expecting $end
  remote: gem 'sdoc', '~&gt; 0.4.0',          group: :doc
  remote:                                        ^
  remote: Building Ruby cartridge
  remote: NOTE: Skipping 'bundle install' because running in development mode.
  remote: Preparing build for deployment
  remote: Deployment id is a65ea3ad
  remote: Activating deployment
  remote: Starting MySQL 5.5 cartridge
  remote: NOTE: The 'rake assets:precompile' is disabled when Ruby is in development mode.
  remote: bundle exec rake db:migrate RAILS_ENV=development
  remote: /opt/rh/ror40/root/usr/share/gems/gems/bundler-1.3.5/lib/bundler/spec_set.rb:92:in `block in materialize': Could not find rake-0.9.6 in any of the sources (Bundler::GemNotFound)
  remote:     from /opt/rh/ror40/root/usr/share/gems/gems/bundler-1.3.5/lib/bundler/spec_set.rb:85:in `map!'
  remote:     from /opt/rh/ror40/root/usr/share/gems/gems/bundler-1.3.5/lib/bundler/spec_set.rb:85:in `materialize'
  remote:     from /opt/rh/ror40/root/usr/share/gems/gems/bundler-1.3.5/lib/bundler/definition.rb:114:in `specs'
  remote:     from /opt/rh/ror40/root/usr/share/gems/gems/bundler-1.3.5/lib/bundler/definition.rb:159:in `specs_for'
  remote:     from /opt/rh/ror40/root/usr/share/gems/gems/bundler-1.3.5/lib/bundler/definition.rb:148:in `requested_specs'
  remote:     from /opt/rh/ror40/root/usr/share/gems/gems/bundler-1.3.5/lib/bundler/environment.rb:18:in `requested_specs'
  remote:     from /opt/rh/ror40/root/usr/share/gems/gems/bundler-1.3.5/lib/bundler/runtime.rb:13:in `setup'
  remote:     from /opt/rh/ror40/root/usr/share/gems/gems/bundler-1.3.5/lib/bundler.rb:120:in `setup'
  remote:     from /opt/rh/ror40/root/usr/share/gems/gems/bundler-1.3.5/lib/bundler/setup.rb:17:in `&lt;top (required)&gt;'
  remote:     from /opt/rh/ruby200/root/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:53:in `require'
  remote:     from /opt/rh/ruby200/root/usr/share/rubygems/rubygems/core_ext/kernel_require.rb:53:in `require'
  remote: -------------------------
  remote: Git Post-Receive Result: failure
  remote: Activation status: failure
  remote: Activation failed for the following gears:
  remote: 540306395973ca6dc30006bc (Error activating gear: CLIENT_ERROR: Failed to execute action hook 'deploy' for 540306395973ca6dc30006bc application pvcentral)
  remote: Deployment completed with status: failure
  remote: postreceive failed
  To ssh://540306395973ca6dc30006bc@pvcentral-pervasivdev.rhcloud.com/~/git/pvcentral.git/
     8d74e27..5c3182d  master -&gt; master
  </code></pre>