rubygems-bundler 1.3.4 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA512:
3
- metadata.gz: a54f0dfa7d84cec266825776da8b2d3cc8acb8992da8aff941755c43471fb558a57b43d99323ae1d416095458fe68bd3dd46ee2182c09e3659dd3ef913d7d924
4
- data.tar.gz: df2ba5391f44296308697923b6bf209f055b915dc9fd7a839c8f13a289d96e5d1edcfca9a79d70a19f2f07c1a4617acf4e44d31bf9467c4bcf507fc0374e6a02
5
2
  SHA1:
6
- metadata.gz: 4ebd360e100158d71eb1d75c43667822379dd5ec
7
- data.tar.gz: 0dabcd502c996177c54f1c8ac18224bcb61ba541
3
+ data.tar.gz: e2924818f0358170cdbc6b2161193baf44e36c8f
4
+ metadata.gz: ed28cbeb5191d6e07851576bee9540ef6d1aa440
5
+ SHA512:
6
+ data.tar.gz: ee9c2c15fb987ea87265835216f3317175f1d684e807dd49e7d5397560541f0484dee2c52ca186a54af111ba2698599070d56366fd8649369cad64e67d789797
7
+ metadata.gz: 1e3fc6e5079a460e9ddef58c661a70326972a178642efd811640e7067e1d59c0069cbc021ab4c1084c4390eeb6d18f41ace1ae1a23fa960d940785a4ef3dd4d0
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.4.0
4
+ date: 2013-10-20
5
+
6
+ - skip unload! / load round trip when binary found in Gemfile, avoids mpapis/bundler-unload#3
7
+
3
8
  ## 1.3.4
4
9
  date: 2013-10-04
5
10
 
@@ -1,10 +1,10 @@
1
1
  require "rubygems"
2
2
 
3
3
  class Noexec
4
- DEBUG = ENV.key?('NOEXEC_DEBUG')
4
+ DEBUG = ENV['NOEXEC_DEBUG']
5
5
  CURRENT = Dir.pwd
6
6
 
7
- attr_reader :bin
7
+ attr_reader :bin, :gemfile, :rubygems_specs
8
8
 
9
9
  def initialize(bin)
10
10
  log "Bin used: #{bin}"
@@ -17,14 +17,20 @@ class Noexec
17
17
  puts msg if Noexec::DEBUG
18
18
  end
19
19
 
20
- def candidate?(gemfile)
20
+ def log2(msg)
21
+ puts msg if Noexec::DEBUG == "2"
22
+ end
23
+
24
+ def candidate?
25
+ log "Examining #{gemfile}"
21
26
  config_file = File.expand_path('../.noexec.yaml', gemfile)
22
- log "Considering #{config_file.inspect}"
23
27
  if File.exist?(config_file)
24
28
  log "Using config file at #{config_file}"
25
29
  require "yaml"
26
30
  config = YAML::load_file(config_file)
27
- raise "You cannot have both an include and exclude section in your #{config_file.inspect}" unless config['include'].nil? ^ config['exclude'].nil?
31
+ unless config['include'].nil? ^ config['exclude'].nil?
32
+ raise "You cannot have both an include and exclude section in your #{config_file.inspect}"
33
+ end
28
34
  if config['include'] && config['include'].include?(bin)
29
35
  log "Binary included by config"
30
36
  return true
@@ -34,22 +40,24 @@ class Noexec
34
40
  end
35
41
  log "Config based matching didn't find it, resorting to Gemfile lookup"
36
42
  end
37
- return true if %w(ruby irb).include?(bin)
38
43
  ENV['BUNDLE_GEMFILE'] = gemfile
39
- Bundler.with_bundle do |runtime|
40
- if rubygems_spec
41
- missing_spec = runtime.
42
- instance_variable_get(:@definition).
43
- missing_specs.
44
- detect{|spec| spec.name == rubygems_spec.name}
45
- if missing_spec
46
- puts "\e[31mCould not find proper version of #{missing_spec.to_s} in any of the sources\e[0m"
47
- puts "\e[33mRun `bundle install` to install missing gems.\e[0m"
48
- exit Bundler::GemNotFound.new.status_code
49
- end
44
+ runtime = Bundler.load
45
+ log2 "runtime specs: #{runtime.specs.map{|g| "#{g.name}-#{g.version}"}*" "}"
46
+ if rubygems_spec # that single gem
47
+ missing_spec = runtime.
48
+ instance_variable_get(:@definition).
49
+ missing_specs.
50
+ detect{|spec| spec.name == rubygems_spec.name}
51
+ if missing_spec
52
+ puts "\e[31mCould not find proper version of #{missing_spec.to_s} in any of the sources\e[0m"
53
+ puts "\e[33mRun `bundle install` to install missing gems.\e[0m"
54
+ exit Bundler::GemNotFound.new.status_code
50
55
  end
51
- return true if runtime.specs.detect{ |spec| spec.executables.include?(bin) }
52
56
  end
57
+ if runtime.specs.detect{ |spec| spec.executables.include?(bin) }
58
+ return true
59
+ end
60
+ Bundler.unload!(rubygems_specs)
53
61
  false
54
62
  rescue Bundler::BundlerError, Bundler::GemfileError => e
55
63
  warn "Ignoring candidate #{gemfile}:\n#{e}" if Noexec::DEBUG
@@ -57,27 +65,26 @@ class Noexec
57
65
  end
58
66
 
59
67
  def rubygems_spec
60
- @rubygems_spec ||= Bundler.rubygems.plain_specs.detect{|spec| spec.executables.include?(bin) }
68
+ @rubygems_spec ||= rubygems_specs.detect{|spec| spec.executables.include?(bin) }
61
69
  end
62
70
 
63
71
  def setup
64
72
  puts "Noexec - starting check" if Noexec::DEBUG
65
73
  require "bundler-unload"
66
74
 
67
- gemfile = ENV['BUNDLE_GEMFILE'] || File.join(Noexec::CURRENT, "Gemfile")
75
+ @rubygems_specs = Bundler.rubygems.plain_specs # save it for unloading and checking binary
76
+ log2 "rubygems_specs: #{rubygems_specs.map{|g| "#{g.name}-#{g.version}"}*" "}"
77
+
78
+ @gemfile = ENV['BUNDLE_GEMFILE'] || File.join(Noexec::CURRENT, "Gemfile")
79
+
68
80
  while true
69
- if File.file?(gemfile)
70
- log "Examining #{gemfile}"
71
- if candidate?(gemfile)
72
- log "Using #{gemfile}"
73
- ENV['BUNDLE_GEMFILE'] = gemfile
74
- Bundler.setup
75
- return
76
- end
81
+ if File.file?(gemfile) && candidate?
82
+ log "Keeping #{gemfile} loaded"
83
+ return
77
84
  end
78
85
  new_gemfile = File.expand_path("../../Gemfile", gemfile)
79
86
  break if new_gemfile == gemfile
80
- gemfile = new_gemfile
87
+ @gemfile = new_gemfile
81
88
  end
82
89
  log "No valid Gemfile found, moving on"
83
90
  rescue LoadError
@@ -101,6 +108,7 @@ class Noexec
101
108
 
102
109
  else
103
110
  setup
111
+
104
112
  end
105
113
  end
106
114
 
@@ -1,3 +1,3 @@
1
1
  module RubygemsBundler
2
- VERSION = "1.3.4"
2
+ VERSION = "1.4.0"
3
3
  end
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
18
 
19
19
  s.add_dependency "bundler-unload", ">=1.0.2"
20
- s.add_dependency "executable-hooks", ">=1.2.3"
20
+ s.add_dependency "executable-hooks", ">=1.2.5"
21
21
  s.add_development_dependency "tf"
22
22
  #s.add_development_dependency "smf-gem"
23
23
  end
@@ -13,9 +13,9 @@ bundle install # status=0
13
13
 
14
14
  : exclusion
15
15
  head -n 1 "$(which haml)" # match=/env ruby_executable_hooks/
16
- haml --version # match=/Using .*/rubygems-bunelr_bundler-test/Gemfile/; match!=/Binary excluded by config/
16
+ haml --version # match=/Keeping .*/rubygems-bunelr_bundler-test/Gemfile loaded/; match!=/Binary excluded by config/
17
17
  printf "exclude:\n - haml\n" > ${BUNDLE_GEMFILE%/*}/.noexec.yaml
18
- haml --version # match!=/Using .*/rubygems-bunelr_bundler-test/Gemfile/; match=/Binary excluded by config/
18
+ haml --version # match!=/Keeping .*/rubygems-bunelr_bundler-test/Gemfile loaded/; match=/Binary excluded by config/
19
19
 
20
20
  : generated/removed
21
21
  head -n 1 "$(which haml)" # match=/env ruby_executable_hooks/
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubygems-bundler
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.4
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josh Hull
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2013-10-04 00:00:00 Z
13
+ date: 2013-10-20 00:00:00 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: bundler-unload
@@ -29,7 +29,7 @@ dependencies:
29
29
  requirements:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 1.2.3
32
+ version: 1.2.5
33
33
  type: :runtime
34
34
  version_requirements: *id002
35
35
  - !ruby/object:Gem::Dependency
@@ -89,7 +89,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
89
89
  requirements: []
90
90
 
91
91
  rubyforge_project:
92
- rubygems_version: 2.0.10
92
+ rubygems_version: 2.0.12
93
93
  signing_key:
94
94
  specification_version: 4
95
95
  summary: Stop using bundle exec