isolate 1.9.1 → 1.9.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +4 -0
- data/Manifest.txt +1 -0
- data/README.rdoc +48 -33
- data/lib/isolate.rb +6 -2
- data/test/fixtures/isolate.rb +1 -0
- data/test/test_isolate.rb +13 -0
- metadata +4 -3
data/CHANGELOG.rdoc
CHANGED
data/Manifest.txt
CHANGED
@@ -6,6 +6,7 @@ Rakefile
|
|
6
6
|
lib/hoe/isolate.rb
|
7
7
|
lib/isolate.rb
|
8
8
|
lib/isolate/rake.rb
|
9
|
+
test/fixtures/isolate.rb
|
9
10
|
test/fixtures/with-hoe/specifications/hoe-2.3.3.gemspec
|
10
11
|
test/fixtures/with-hoe/specifications/rake-0.8.7.gemspec
|
11
12
|
test/fixtures/with-hoe/specifications/rubyforge-1.0.4.gemspec
|
data/README.rdoc
CHANGED
@@ -38,7 +38,7 @@ same name. Version specifiers are optional.
|
|
38
38
|
require "rubygems"
|
39
39
|
require "isolate"
|
40
40
|
|
41
|
-
Isolate.gems "
|
41
|
+
Isolate.gems "tmp/gems" do
|
42
42
|
gem "johnson", "~> 1.1" # or maybe...
|
43
43
|
gem "jbarnette-johnson"
|
44
44
|
end
|
@@ -61,7 +61,7 @@ Sometimes different sets of gems are appropriate at different
|
|
61
61
|
times. Isolate allows you to restrict gems by 'environment' (which is
|
62
62
|
really just a string passed in when things are activated).
|
63
63
|
|
64
|
-
Isolate.gems "
|
64
|
+
Isolate.gems "tmp/gems" do
|
65
65
|
gem "intercession"
|
66
66
|
|
67
67
|
environment :test, :cucumber do
|
@@ -86,6 +86,15 @@ exceptions, <tt>:source</tt> and <tt>:args</tt>.
|
|
86
86
|
# pass gem install args (the part after the '--')
|
87
87
|
gem "agem", :args => "--no-blah"
|
88
88
|
|
89
|
+
=== An External File
|
90
|
+
|
91
|
+
If you'd like to have a separate file that *just* has your +gem+ and
|
92
|
+
+environment+ calls in it, You can pass an optional <tt>:file</tt>
|
93
|
+
option instead of (or in addition to) providing a block.
|
94
|
+
|
95
|
+
# keepin' things clean
|
96
|
+
Isolate.gems "tmp/gems", :file => "config/isolate.rb"
|
97
|
+
|
89
98
|
=== Installing Isolated Gems
|
90
99
|
|
91
100
|
By default, Isolate will install and clean up your gems
|
@@ -93,17 +102,17 @@ automatically. You can pass the <tt>:cleanup</tt>, <tt>:install</tt>,
|
|
93
102
|
and <tt>:verbose</tt> options to control things:
|
94
103
|
|
95
104
|
# don't remove unnecesary gems
|
96
|
-
Isolate.gems "
|
105
|
+
Isolate.gems "tmp/gems", :cleanup => false do
|
97
106
|
...
|
98
107
|
end
|
99
108
|
|
100
109
|
# install, but quietly
|
101
|
-
Isolate.gems "
|
110
|
+
Isolate.gems "tmp/gems", :verbose => false do
|
102
111
|
...
|
103
112
|
end
|
104
113
|
|
105
114
|
# don't install
|
106
|
-
Isolate.gems "
|
115
|
+
Isolate.gems "tmp/gems", :install => false do
|
107
116
|
...
|
108
117
|
end
|
109
118
|
|
@@ -142,49 +151,55 @@ doesn't want to depend on any system gems (except isolate, of course).
|
|
142
151
|
|
143
152
|
Gem dependencies are defined in <tt>config/preinitializer.rb</tt>. If
|
144
153
|
you want, you could just as easily put them in
|
145
|
-
<tt>config/{gems,deps,
|
154
|
+
<tt>config/{gems,deps,isolate}.rb</tt>, just make sure it's loaded in
|
146
155
|
the preinitializer:
|
147
156
|
|
148
157
|
require "rubygems"
|
149
158
|
require "isolate"
|
150
159
|
|
151
|
-
Isolate.gems "
|
152
|
-
gem "rails", "= 2.2.2"
|
160
|
+
Isolate.gems "tmp/gems", :file => "config/isolate.rb"
|
153
161
|
|
154
|
-
|
155
|
-
gem "ar_mailer", "~> 1.3", '>= 1.3.3'
|
162
|
+
In <tt>config/isolate.rb</tt>:
|
156
163
|
|
157
|
-
|
158
|
-
gem "facebooker", ">= 1.0.31"
|
164
|
+
gem "rails", "= 2.2.2"
|
159
165
|
|
160
|
-
|
161
|
-
|
166
|
+
# async emails!
|
167
|
+
gem "ar_mailer", "~> 1.3", '>= 1.3.3'
|
162
168
|
|
163
|
-
|
164
|
-
|
169
|
+
# Facebook integration
|
170
|
+
gem "facebooker", ">= 1.0.31"
|
165
171
|
|
166
|
-
|
167
|
-
|
172
|
+
# Google contacts integration
|
173
|
+
gem "gmail_contacts", "~> 1.7"
|
168
174
|
|
169
|
-
|
170
|
-
|
175
|
+
# View templates
|
176
|
+
gem "haml", "~> 2.0"
|
171
177
|
|
172
|
-
|
173
|
-
|
178
|
+
# Session as model
|
179
|
+
gem "intercession", "~> 1.0"
|
174
180
|
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
181
|
+
# XML/HTML parsing in Facebooker and tests
|
182
|
+
gem "nokogiri", ">= 1.2.3"
|
183
|
+
|
184
|
+
# Twitter authentication
|
185
|
+
gem "oauth", "~> 0.3"
|
186
|
+
|
187
|
+
environment :cucumber, :development, :test do
|
188
|
+
gem "cucumber" # stories!
|
189
|
+
gem "modelizer" # easy model factories
|
190
|
+
gem "sqlite3-ruby" # database support
|
191
|
+
gem "vlad" # deployment
|
192
|
+
gem "webrat" # integration tests
|
182
193
|
end
|
183
194
|
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
195
|
+
You could specify all this inside an <tt>Isolate.gems</tt> block in
|
196
|
+
<tt>config/preinitializer.rb</tt>, of course, but sometimes it's nicer
|
197
|
+
to have an external file that's just your dependency manifest.
|
198
|
+
|
199
|
+
Since this is loaded in the preinitializer, Isolate will install and
|
200
|
+
activate the all gems before Rails loads. The current environment is
|
201
|
+
determined by looking at the <tt>ISOLATE_ENV</tt>, <tt>RAILS_ENV</tt>,
|
202
|
+
or <tt>RACK_ENV</tt> environment variable. If none are set,
|
188
203
|
<tt>"development"</tt> is the default.
|
189
204
|
|
190
205
|
Pow. Isolated!
|
data/lib/isolate.rb
CHANGED
@@ -8,7 +8,7 @@ require "rubygems/requirement"
|
|
8
8
|
|
9
9
|
class Isolate
|
10
10
|
|
11
|
-
VERSION = "1.9.
|
11
|
+
VERSION = "1.9.2" # :nodoc:
|
12
12
|
|
13
13
|
# An isolated Gem, with requirement, environment restrictions, and
|
14
14
|
# installation options. Internal use only.
|
@@ -37,10 +37,13 @@ class Isolate
|
|
37
37
|
ENV["ISOLATE_ENV"] || ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development"
|
38
38
|
end
|
39
39
|
|
40
|
-
# Declare an isolated RubyGems environment, installed in +path+.
|
40
|
+
# Declare an isolated RubyGems environment, installed in +path+. Any
|
41
41
|
# block given will be <tt>instance_eval</tt>ed, see Isolate#gem and
|
42
42
|
# Isolate#environment for the sort of stuff you can do.
|
43
43
|
#
|
44
|
+
# If you'd like to specify gems and environments in a separate file,
|
45
|
+
# you can pass an optional <tt>:file</tt> option.
|
46
|
+
#
|
44
47
|
# Option defaults:
|
45
48
|
#
|
46
49
|
# { :cleanup => true, :install => true, :verbose => true }
|
@@ -78,6 +81,7 @@ class Isolate
|
|
78
81
|
@verbose = options.fetch :verbose, true
|
79
82
|
@cleanup = @install && options.fetch(:cleanup, true)
|
80
83
|
|
84
|
+
instance_eval IO.read(options[:file]) if options[:file]
|
81
85
|
instance_eval(&block) if block_given?
|
82
86
|
end
|
83
87
|
|
@@ -0,0 +1 @@
|
|
1
|
+
gem "hoe"
|
data/test/test_isolate.rb
CHANGED
@@ -9,6 +9,8 @@ class TestIsolate < MiniTest::Unit::TestCase
|
|
9
9
|
def setup
|
10
10
|
@isolate = Isolate.new "tmp/gems", :install => false, :verbose => false
|
11
11
|
@env = ENV.to_hash
|
12
|
+
|
13
|
+
Gem.loaded_specs.clear
|
12
14
|
end
|
13
15
|
|
14
16
|
def teardown
|
@@ -213,6 +215,14 @@ class TestIsolate < MiniTest::Unit::TestCase
|
|
213
215
|
assert_equal File.expand_path("foo/gems"), i.path
|
214
216
|
end
|
215
217
|
|
218
|
+
def test_initialize_block
|
219
|
+
i = Isolate.new "foo/gems" do
|
220
|
+
gem "hoe"
|
221
|
+
end
|
222
|
+
|
223
|
+
assert_equal "hoe", i.entries.first.name
|
224
|
+
end
|
225
|
+
|
216
226
|
def test_initialize_options
|
217
227
|
i = Isolate.new "foo/gems"
|
218
228
|
assert i.install?
|
@@ -228,6 +238,9 @@ class TestIsolate < MiniTest::Unit::TestCase
|
|
228
238
|
|
229
239
|
i = Isolate.new "foo/gems", :install => false
|
230
240
|
refute i.cleanup?, "no install, no cleanup"
|
241
|
+
|
242
|
+
i = Isolate.new "foo/gems", :file => "test/fixtures/isolate.rb"
|
243
|
+
assert_equal "hoe", i.entries.first.name
|
231
244
|
end
|
232
245
|
end
|
233
246
|
|
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.9.
|
4
|
+
version: 1.9.2
|
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: 2010-
|
13
|
+
date: 2010-02-17 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: 0.
|
34
|
+
version: 0.3.0
|
35
35
|
version:
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: minitest
|
@@ -76,6 +76,7 @@ files:
|
|
76
76
|
- lib/hoe/isolate.rb
|
77
77
|
- lib/isolate.rb
|
78
78
|
- lib/isolate/rake.rb
|
79
|
+
- test/fixtures/isolate.rb
|
79
80
|
- test/fixtures/with-hoe/specifications/hoe-2.3.3.gemspec
|
80
81
|
- test/fixtures/with-hoe/specifications/rake-0.8.7.gemspec
|
81
82
|
- test/fixtures/with-hoe/specifications/rubyforge-1.0.4.gemspec
|