isolate 1.7.1 → 1.8.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,10 @@
1
+ === 1.8.0 / 2010-01-05
2
+
3
+ * Make build args forgive non-Array input.
4
+ * OMG, heaven forbid I use math.
5
+ * Remove deprecated Isolate.activate method.
6
+ * Remove passthrough, that's what conditionals are for.
7
+
1
8
  === 1.7.1 / 2009-12-08
2
9
 
3
10
  * Move to 1-phase activation. Deprecate Isolate.activate.
@@ -64,27 +64,6 @@ Unsurprisingly, the <tt>mocha</tt> gem will only be activated in the
64
64
  example below for an example of how to use <tt>RAILS_ENV</tt> to set
65
65
  your environment.
66
66
 
67
- === Passthrough
68
-
69
- Sometimes (especially on systems with alternative Gem management like
70
- Heroku) you want Isolate to sit in a corner, be very, very quiet, and
71
- let all calls pass right through.
72
-
73
- If you want to make Isolate a complete no-op in production, and your
74
- environment sets <tt>RACK_ENV</tt>, you could do something like this:
75
-
76
- Isolate.gems "vendor/isolated" do
77
- passthrough { %w(beta production).include? ENV["RACK_ENV"] }
78
-
79
- # the rest of your gems...
80
- end
81
-
82
- ...and nothing will get isolated. The block should evaluate to
83
- <tt>true</tt> if that's what you want, and it's only evaluated
84
- once. This is run really early, so don't blindly assume things like
85
- the <tt>RAILS_ENV</tt> constant are set. Check your environment for
86
- details.
87
-
88
67
  === Options
89
68
 
90
69
  Any trailing hash args to <tt>gem</tt> are passed to
@@ -95,7 +74,7 @@ exceptions, <tt>:source</tt> and <tt>:args</tt>.
95
74
  gem "jbarnette-johnson", :source => "http://gems.github.com"
96
75
 
97
76
  # pass gem install args (the part after the '--')
98
- gem "pg", :args => "ARCHFLAGS='-arch x86_64'"
77
+ gem "agem", :args => "--no-blah"
99
78
 
100
79
  === Installing Isolated Gems
101
80
 
@@ -21,18 +21,11 @@ class Isolate
21
21
  end
22
22
  end
23
23
 
24
- VERSION = "1.7.1" # :nodoc:
24
+ VERSION = "1.8.0" # :nodoc:
25
25
 
26
26
  attr_reader :entries # :nodoc:
27
27
  attr_reader :path # :nodoc:
28
28
 
29
- # Deprecated. This is no a no-op, and will be removed shortly.
30
-
31
- def self.activate environment
32
- puts "DEPRECATED: Isolate.activate is a no-op now. " +
33
- "It'll be removed in v1.8. See the README for details."
34
- end
35
-
36
29
  # Declare an isolated RubyGems environment, installed in +path+. The
37
30
  # block given will be <tt>instance_eval</tt>ed, see Isolate#gem and
38
31
  # Isolate#environment for the sort of stuff you can do.
@@ -68,7 +61,6 @@ class Isolate
68
61
  @enabled = false
69
62
  @entries = []
70
63
  @environments = []
71
- @passthrough = false
72
64
  @path = File.expand_path path
73
65
 
74
66
  @install = options.fetch :install, true
@@ -107,18 +99,17 @@ class Isolate
107
99
  end
108
100
 
109
101
  def cleanup # :nodoc:
110
- return self if passthrough?
111
-
112
102
  activated = Gem.loaded_specs.values.map { |s| s.full_name }
113
103
  extra = Gem.source_index.gems.values.sort.reject { |spec|
114
104
  activated.include? spec.full_name or
115
105
  entries.any? { |e| e.matches_spec? spec }
116
106
  }
117
107
 
118
- log "Cleaning..." unless extra.empty?
108
+ return if extra.empty?
119
109
 
120
- padding = extra.size.to_s.size # omg... heaven forbid you use math
110
+ padding = Math.log10(extra.size).to_i + 1
121
111
  format = "[%0#{padding}d/%s] Nuking %s."
112
+
122
113
  extra.each_with_index do |e, i|
123
114
  log format % [i + 1, extra.size, e.full_name]
124
115
 
@@ -137,7 +128,7 @@ class Isolate
137
128
  end
138
129
 
139
130
  def disable # :nodoc:
140
- return self if passthrough? or not enabled?
131
+ return self if not enabled?
141
132
 
142
133
  ENV["GEM_PATH"] = @old_gem_path
143
134
  ENV["GEM_HOME"] = @old_gem_home
@@ -154,7 +145,7 @@ class Isolate
154
145
  end
155
146
 
156
147
  def enable # :nodoc:
157
- return self if passthrough? or enabled?
148
+ return self if enabled?
158
149
 
159
150
  @old_gem_path = ENV["GEM_PATH"]
160
151
  @old_gem_home = ENV["GEM_HOME"]
@@ -220,16 +211,15 @@ class Isolate
220
211
  end
221
212
 
222
213
  def install environment # :nodoc:
223
- return self if passthrough?
224
-
225
214
  installable = entries.select do |e|
226
215
  !Gem.available?(e.name, *e.requirement.as_list) && e.matches?(environment)
227
216
  end
228
217
 
229
- log "Isolating #{environment}..." unless installable.empty?
218
+ return self if installable.empty?
230
219
 
231
- padding = installable.size.to_s.size # omg... heaven forbid you use math
220
+ padding = Math.log10(installable.size).to_i + 1
232
221
  format = "[%0#{padding}d/%s] Isolating %s (%s)."
222
+
233
223
  installable.each_with_index do |e, i|
234
224
  log format % [i + 1, installable.size, e.name, e.requirement]
235
225
 
@@ -242,7 +232,7 @@ class Isolate
242
232
  Gem.sources = Array(source) if source
243
233
  installer = Gem::DependencyInstaller.new options
244
234
 
245
- Gem::Command.build_args = args if args
235
+ Gem::Command.build_args = Array(args) if args
246
236
  installer.install e.name, e.requirement
247
237
 
248
238
  Gem.sources = old
@@ -262,14 +252,6 @@ class Isolate
262
252
  $stderr.puts s if verbose?
263
253
  end
264
254
 
265
- def passthrough &block # :nodoc:
266
- @passthrough = yield
267
- end
268
-
269
- def passthrough? # :nodoc:
270
- @passthrough
271
- end
272
-
273
255
  def verbose? # :nodoc:
274
256
  @verbose
275
257
  end
@@ -209,21 +209,6 @@ class TestIsolate < MiniTest::Unit::TestCase
209
209
  i = Isolate.new "foo/gems", :install => false
210
210
  refute i.cleanup?, "no install, no cleanup"
211
211
  end
212
-
213
- def test_passthrough
214
- refute @isolate.passthrough?
215
-
216
- @isolate.passthrough { true }
217
- assert @isolate.passthrough?
218
-
219
- idx = Gem.source_index.dup
220
- @isolate.activate
221
- assert_equal idx, Gem.source_index
222
-
223
-
224
- @isolate.passthrough { false }
225
- refute @isolate.passthrough?
226
- end
227
212
  end
228
213
 
229
214
  module BrutalStub
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: isolate
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.1
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Barnette
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-12-08 00:00:00 -08:00
13
+ date: 2010-01-05 00:00:00 -08:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -31,7 +31,7 @@ dependencies:
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: 2.3.3
34
+ version: 2.4.0
35
35
  version:
36
36
  description: |-
37
37
  Isolate is a very simple RubyGems sandbox. It provides a way to