Class: Bundler::Env

Inherits:
Object
  • Object
show all
Defined in:
lib/bundler/env.rb

Class Method Summary collapse

Class Method Details

.environmentObject

[View source]

92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/bundler/env.rb', line 92

def self.environment
  out = []

  out << ["Bundler", Bundler::VERSION]
  out << ["  Platforms", Gem.platforms.join(", ")]
  out << ["Ruby", ruby_version]
  out << ["  Full Path", Gem.ruby]
  out << ["  Config Dir", Pathname.new(Gem::ConfigFile::SYSTEM_WIDE_CONFIG_FILE).dirname]
  out << ["RubyGems", Gem::VERSION]
  out << ["  Gem Home", Gem.dir]
  out << ["  Gem Path", Gem.path.join(File::PATH_SEPARATOR)]
  out << ["  User Home", Gem.user_home]
  out << ["  User Path", Gem.user_dir]
  out << ["  Bin Dir", Gem.bindir]
  if defined?(OpenSSL::SSL)
    out << ["OpenSSL"]
    out << ["  Compiled", OpenSSL::OPENSSL_VERSION] if defined?(OpenSSL::OPENSSL_VERSION)
    out << ["  Loaded", OpenSSL::OPENSSL_LIBRARY_VERSION] if defined?(OpenSSL::OPENSSL_LIBRARY_VERSION)
    out << ["  Cert File", OpenSSL::X509::DEFAULT_CERT_FILE] if defined?(OpenSSL::X509::DEFAULT_CERT_FILE)
    out << ["  Cert Dir", OpenSSL::X509::DEFAULT_CERT_DIR] if defined?(OpenSSL::X509::DEFAULT_CERT_DIR)
  end
  out << ["Tools"]
  out << ["  Git", git_version]
  out << ["  RVM", ENV.fetch("rvm_version") { version_of("rvm") }]
  out << ["  rbenv", version_of("rbenv")]
  out << ["  chruby", chruby_version]

  %w[rubygems-bundler open_gem].each do |name|
    specs = Bundler.rubygems.find_name(name)
    out << ["  #{name}", "(#{specs.map(&:version).join(",")})"] unless specs.empty?
  end
  if (exe = caller_locations.last.absolute_path)&.match? %r{(exe|bin)/bundler?\z}
    shebang = File.read(exe).lines.first
    shebang.sub!(/^#!\s*/, "")
    unless shebang.start_with?(Gem.ruby, "/usr/bin/env ruby")
      out << ["Gem.ruby", Gem.ruby]
      out << ["bundle #!", shebang]
    end
  end

  out
end

.report(options = {}) ⇒ Object

[View source]

12
13
14
15
16
17
18
19
20
21
22
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
49
50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/bundler/env.rb', line 12

def self.report(options = {})
  print_gemfile = options.delete(:print_gemfile) { true }
  print_gemspecs = options.delete(:print_gemspecs) { true }

  out = String.new
  append_formatted_table("Environment", environment, out)
  append_formatted_table("Bundler Build Metadata", BuildMetadata.to_h, out)

  unless Bundler.settings.all.empty?
    out << "\n## Bundler settings\n\n```\n"
    Bundler.settings.all.each do |setting|
      out << setting << "\n"
      Bundler.settings.pretty_values_for(setting).each do |line|
        out << "  " << line << "\n"
      end
    end
    out << "```\n"
  end

  return out unless SharedHelpers.in_bundle?

  if print_gemfile
    gemfiles = [Bundler.default_gemfile]
    begin
      gemfiles = Bundler.definition.gemfiles
    rescue GemfileNotFound
      nil
    end

    out << "\n## Gemfile\n"
    gemfiles.each do |gemfile|
      out << "\n### #{SharedHelpers.relative_path_to(gemfile)}\n\n"
      out << "```ruby\n" << read_file(gemfile).chomp << "\n```\n"
    end

    out << "\n### #{SharedHelpers.relative_path_to(Bundler.default_lockfile)}\n\n"
    out << "```\n" << read_file(Bundler.default_lockfile).chomp << "\n```\n"
  end

  if print_gemspecs
    dsl = Dsl.new.tap {|d| d.eval_gemfile(Bundler.default_gemfile) }
    out << "\n## Gemspecs\n" unless dsl.gemspecs.empty?
    dsl.gemspecs.each do |gs|
      out << "\n### #{File.basename(gs.loaded_from)}"
      out << "\n\n```ruby\n" << read_file(gs.loaded_from).chomp << "\n```\n"
    end
  end

  out
end

.write(io) ⇒ Object

[View source]

8
9
10
# File 'lib/bundler/env.rb', line 8

def self.write(io)
  io.write report
end