Sha256: 1655a2508ca084c458ef2d8bf65c8722ba47638dc94daf273eadcd6cfe93cfa3

Contents?: true

Size: 1.21 KB

Versions: 1

Compression:

Stored size: 1.21 KB

Contents

require 'bundler'

module Dockdev
  module Context
    class Rubygems

      def self.init_path(path)
        Rubygems.new(path)
      end

      def initialize(path)
        @path = path
      end

      def is_context?
        find_gemfile.length > 0
      end

      def find_gemfile
        Dir.glob(File.join(@path,"Gemfile"))
      end

      def process_mount(mount_hash, dir_inside_docker = "/opt")

        if not mount_hash.nil? and mount_hash.is_a?(Hash)

          # 
          # looking at source code 
          # https://github.com/rubygems/rubygems/blob/master/bundler/lib/bundler/shared_helpers.rb#L246
          # seems this is the way to set root for Bundler
          #
          ENV['BUNDLE_GEMFILE'] = find_gemfile.first
          Bundler.load.dependencies.each do |d|
            if not d.source.nil?
              src = d.source
              if src.path.to_s != "."
                mount_hash[src.path.expand_path.to_s] = File.join(dir_inside_docker, d.name)
                #res[d.name] = src.path.expand_path.to_s
              end
            end
          end

        end

        mount_hash
      end

    end
  end
end

Dockdev::Context::ContextManager.instance.register(:rubygems, Dockdev::Context::Rubygems)

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dockdev-0.3.2 lib/dockdev/context/rubygems.rb