Class: Kettle::Dev::GemSourceProbe
- Inherits:
-
Object
- Object
- Kettle::Dev::GemSourceProbe
- Defined in:
- lib/kettle/dev/gem_source_probe.rb
Constant Summary collapse
- UNBUNDLED_ENV_KEYS =
(BundlerEnvGuard::RESET_ENV_KEYS + %w[ RUBYGEMS_GEMDEPS RUBYLIB RUBYOPT ]).freeze
Class Method Summary collapse
Instance Method Summary collapse
- #available?(name, version) ⇒ Boolean
-
#initialize(source_url:, ruby: Gem.ruby) ⇒ GemSourceProbe
constructor
A new instance of GemSourceProbe.
Constructor Details
#initialize(source_url:, ruby: Gem.ruby) ⇒ GemSourceProbe
Returns a new instance of GemSourceProbe.
18 19 20 21 |
# File 'lib/kettle/dev/gem_source_probe.rb', line 18 def initialize(source_url:, ruby: Gem.ruby) @source_url = source_url @ruby = ruby end |
Class Method Details
.bundler_inline_script(name:, version:, source_url:) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/kettle/dev/gem_source_probe.rb', line 50 def self.bundler_inline_script(name:, version:, source_url:) <<~RUBY # frozen_string_literal: true require "bundler/inline" gem_name = #{name.dump} version = #{version.dump} gemfile(true) do source #{source_url.dump} gem gem_name, "= \#{version}", require: false end spec = Gem::Specification.find_all_by_name(gem_name, "= \#{version}").first abort("resolved no \#{gem_name} \#{version} spec from #{source_url}") unless spec puts "Validated \#{gem_name} \#{version} from #{source_url}" RUBY end |
Instance Method Details
#available?(name, version) ⇒ Boolean
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/kettle/dev/gem_source_probe.rb', line 23 def available?(name, version) stderr = nil BundlerEnvGuard.warn_unexpected_env! with_probe_gem_home do |gem_home| _stdout, stderr, status = Open3.capture3( probe_env(gem_home), "gem", "install", name, "-v", "= #{version}", "--source", source_url, "--clear-sources", "--ignore-dependencies", "--no-document", "--install-dir", gem_home ) status.success? end rescue SystemCallError => error raise Error, "Could not verify #{name} #{version} from #{source_url}: #{error.}" ensure warn(stderr) if ENV["KETTLE_DEV_DEBUG"] == "true" && stderr && !stderr.empty? end |