Sha256: dd59bf259c2e00776de6f00e1d983da5b200975bc75b99386062538a6e472099

Contents?: true

Size: 1.53 KB

Versions: 20

Compression:

Stored size: 1.53 KB

Contents

class DeploySpec
  module BundlerDiscovery
    DEFAULT_BUNDLER_WITHOUT = %w(default production development test staging benchmark debug)

    def discover_dependencies_steps
      discover_bundler || super
    end

    def discover_bundler
      bundle_install if bundler?
    end

    def bundle_exec(command)
      return command unless bundler?
      "bundle exec #{command}"
    end

    def bundle_install
      bundle = %(bundle check --path=#{bundle_path} || bundle install #{frozen_flag} --path=#{bundle_path} --retry=2)
      bundle += " --without=#{bundler_without.join(':')}" unless bundler_without.empty?
      [remove_ruby_version_from_gemfile, bundle]
    end

    def remove_ruby_version_from_gemfile
      # Heroku apps often specify a ruby version.
      if /darwin/ =~ RUBY_PLATFORM
        # OSX is nitpicky about the -i.
        %q(sed -i '' '/^ruby\s/d' Gemfile)
      else
        %q(sed -i '/^ruby\s/d' Gemfile)
      end
    end

    def frozen_flag
      return unless gemfile_lock_exists?
      return if config('dependencies', 'bundler', 'frozen') == false
      '--frozen'
    end

    def bundler_without
      config('dependencies', 'bundler', 'without') || (gem? ? [] : DEFAULT_BUNDLER_WITHOUT)
    end

    def bundler?
      file('Gemfile').exist?
    end

    def gemfile_lock_exists?
      file('Gemfile.lock').exist?
    end

    def coerce_task_definition(config)
      return super unless bundler?
      config['steps'] ||= []
      config['steps'] = config['steps'].map(&method(:bundle_exec))
      config
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
shipit-engine-0.5.2 app/models/deploy_spec/bundler_discovery.rb
shipit-engine-0.5.1 app/models/deploy_spec/bundler_discovery.rb
shipit-engine-0.5.0 app/models/deploy_spec/bundler_discovery.rb
shipit-engine-0.4.10 app/models/deploy_spec/bundler_discovery.rb
shipit-engine-0.4.9 app/models/deploy_spec/bundler_discovery.rb
shipit-engine-0.4.8 app/models/deploy_spec/bundler_discovery.rb
shipit-engine-0.4.7 app/models/deploy_spec/bundler_discovery.rb
shipit-engine-0.4.6 app/models/deploy_spec/bundler_discovery.rb
shipit-engine-0.4.5 app/models/deploy_spec/bundler_discovery.rb
shipit-engine-0.4.4 app/models/deploy_spec/bundler_discovery.rb
shipit-engine-0.4.3 app/models/deploy_spec/bundler_discovery.rb
shipit-engine-0.4.2 app/models/deploy_spec/bundler_discovery.rb
shipit-engine-0.4.1 app/models/deploy_spec/bundler_discovery.rb
shipit-engine-0.4.0 app/models/deploy_spec/bundler_discovery.rb
shipit-engine-0.3.1 app/models/deploy_spec/bundler_discovery.rb
shipit-engine-0.3.0 app/models/deploy_spec/bundler_discovery.rb
shipit-engine-0.2.3 app/models/deploy_spec/bundler_discovery.rb
shipit-engine-0.2.2 app/models/deploy_spec/bundler_discovery.rb
shipit-engine-0.2.1 app/models/deploy_spec/bundler_discovery.rb
shipit-engine-0.2.0 app/models/deploy_spec/bundler_discovery.rb