vegas 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +5 -1
- data/History.txt +6 -0
- data/Rakefile +35 -32
- data/lib/vegas.rb +1 -1
- data/lib/vegas/runner.rb +96 -44
- data/test/test_helper.rb +5 -1
- data/test/test_vegas_runner.rb +83 -9
- data/vegas.gemspec +11 -9
- metadata +14 -5
- data/pkg/vegas-0.1.1.gem +0 -0
data/.gitignore
CHANGED
data/History.txt
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
== 0.1.3 2010-01-08
|
2
|
+
|
3
|
+
* Fixed: Runner escapes :app_name to make it a valid string for using in paths (thanks greatseth!)
|
4
|
+
* Fixed: Runner respects a server setting on Sinatra apps to use that specific Rack handler. (thanks greatseth!)
|
5
|
+
* New: Tested against Rack 1.1
|
6
|
+
|
1
7
|
== 0.1.2 2009-12-28
|
2
8
|
|
3
9
|
* New
|
data/Rakefile
CHANGED
@@ -1,32 +1,35 @@
|
|
1
|
-
%w[rubygems rake rake/clean rake/testtask fileutils].each { |f| require f }
|
2
|
-
require File.dirname(__FILE__) + '/lib/vegas'
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'jeweler'
|
6
|
-
Jeweler::Tasks.new do |s|
|
7
|
-
s.name = %q{vegas}
|
8
|
-
s.version = Vegas::VERSION
|
9
|
-
s.authors = ["Aaron Quint"]
|
10
|
-
s.date = %q{2009-08-30}
|
11
|
-
s.summary = "Vegas aims to solve the simple problem of creating executable versions of Sinatra/Rack apps."
|
12
|
-
s.description = %{Vegas aims to solve the simple problem of creating executable versions of Sinatra/Rack apps. It includes a class Vegas::Runner that wraps Rack/Sinatra applications and provides a simple command line interface and launching mechanism.}
|
13
|
-
s.email = ["aaron@quirkey.com"]
|
14
|
-
s.homepage = %q{http://code.quirkey.com/vegas}
|
15
|
-
s.rubyforge_project = %q{quirkey}
|
16
|
-
|
17
|
-
s.
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
1
|
+
%w[rubygems rake rake/clean rake/testtask fileutils].each { |f| require f }
|
2
|
+
require File.dirname(__FILE__) + '/lib/vegas'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |s|
|
7
|
+
s.name = %q{vegas}
|
8
|
+
s.version = Vegas::VERSION
|
9
|
+
s.authors = ["Aaron Quint"]
|
10
|
+
s.date = %q{2009-08-30}
|
11
|
+
s.summary = "Vegas aims to solve the simple problem of creating executable versions of Sinatra/Rack apps."
|
12
|
+
s.description = %{Vegas aims to solve the simple problem of creating executable versions of Sinatra/Rack apps. It includes a class Vegas::Runner that wraps Rack/Sinatra applications and provides a simple command line interface and launching mechanism.}
|
13
|
+
s.email = ["aaron@quirkey.com"]
|
14
|
+
s.homepage = %q{http://code.quirkey.com/vegas}
|
15
|
+
s.rubyforge_project = %q{quirkey}
|
16
|
+
|
17
|
+
s.add_runtime_dependency(%q<rack>, [">= 1.0.0"])
|
18
|
+
|
19
|
+
s.add_development_dependency(%q<mocha>, ["~> 0.9.8"])
|
20
|
+
s.add_development_dependency(%q<bacon>, ["~> 1.1.0"])
|
21
|
+
s.add_development_dependency(%q<sinatra>, ["~> 0.9.4"])
|
22
|
+
|
23
|
+
end
|
24
|
+
Jeweler::GemcutterTasks.new
|
25
|
+
rescue LoadError
|
26
|
+
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
27
|
+
end
|
28
|
+
|
29
|
+
Rake::TestTask.new do |t|
|
30
|
+
t.libs << "test"
|
31
|
+
t.test_files = FileList['test/test*.rb']
|
32
|
+
t.verbose = true
|
33
|
+
end
|
34
|
+
|
35
|
+
task :default => :test
|
data/lib/vegas.rb
CHANGED
data/lib/vegas/runner.rb
CHANGED
@@ -6,72 +6,81 @@ if Vegas::WINDOWS
|
|
6
6
|
begin
|
7
7
|
require 'win32/process'
|
8
8
|
rescue
|
9
|
-
puts "Sorry, in order to use Vegas on Windows you need the win32-process gem:\n
|
9
|
+
puts "Sorry, in order to use Vegas on Windows you need the win32-process gem:\n " +
|
10
|
+
"gem install win32-process"
|
10
11
|
end
|
11
12
|
end
|
12
13
|
|
13
14
|
module Vegas
|
14
15
|
class Runner
|
15
|
-
attr_reader :app, :app_name, :
|
16
|
-
|
16
|
+
attr_reader :app, :app_name, :filesystem_friendly_app_name, :quoted_app_name,
|
17
|
+
:rack_handler, :port, :host, :options, :args
|
18
|
+
|
17
19
|
ROOT_DIR = File.expand_path(File.join('~', '.vegas'))
|
18
20
|
PORT = 5678
|
19
21
|
HOST = WINDOWS ? 'localhost' : '0.0.0.0'
|
20
|
-
|
22
|
+
|
21
23
|
def initialize(app, app_name, set_options = {}, runtime_args = ARGV, &block)
|
22
|
-
|
23
|
-
|
24
|
-
@app_name = app_name
|
25
|
-
@options = set_options || {}
|
26
|
-
@runtime_args = runtime_args
|
24
|
+
@options = set_options || {}
|
25
|
+
|
27
26
|
self.class.logger.level = options[:debug] ? Logger::DEBUG : Logger::INFO
|
28
|
-
|
29
|
-
@
|
30
|
-
|
27
|
+
|
28
|
+
@app = app
|
29
|
+
@app_name = app_name
|
30
|
+
|
31
|
+
@filesystem_friendly_app_name = @app_name.gsub(/\W+/, "_")
|
32
|
+
@quoted_app_name = "'#{app_name}'"
|
33
|
+
|
34
|
+
@runtime_args = runtime_args
|
35
|
+
@rack_handler = setup_rack_handler
|
31
36
|
|
32
37
|
# load options from opt parser
|
33
38
|
@args = define_options do |opts|
|
34
39
|
if block_given?
|
35
40
|
opts.separator ''
|
36
|
-
opts.separator "#{
|
41
|
+
opts.separator "#{quoted_app_name} options:"
|
37
42
|
yield(self, opts, app)
|
38
43
|
end
|
39
44
|
end
|
40
45
|
|
41
|
-
#
|
42
|
-
if before_run = options.delete(:before_run)
|
43
|
-
before_run.is_a?(Proc)
|
46
|
+
# Handle :before_run hook
|
47
|
+
if (before_run = options.delete(:before_run)).respond_to?(:call)
|
44
48
|
before_run.call(self)
|
45
49
|
end
|
46
50
|
|
47
|
-
#
|
51
|
+
# Set app options
|
48
52
|
@host = options[:host] || HOST
|
49
|
-
|
50
|
-
|
51
|
-
|
53
|
+
|
54
|
+
if app.respond_to?(:set)
|
55
|
+
app.set(options)
|
56
|
+
app.set(:vegas, self)
|
52
57
|
end
|
53
|
-
|
58
|
+
|
59
|
+
# Make sure app dir is setup
|
54
60
|
FileUtils.mkdir_p(app_dir)
|
55
|
-
|
61
|
+
|
62
|
+
return if options[:start] == false
|
63
|
+
|
56
64
|
# evaluate the launch_path
|
57
|
-
path = if options[:launch_path]
|
65
|
+
path = if options[:launch_path].respond_to?(:call)
|
58
66
|
options[:launch_path].call(self)
|
59
67
|
else
|
60
68
|
options[:launch_path]
|
61
69
|
end
|
70
|
+
|
62
71
|
start(path)
|
63
72
|
end
|
64
73
|
|
65
74
|
def app_dir
|
66
|
-
File.join(ROOT_DIR,
|
75
|
+
File.join(ROOT_DIR, filesystem_friendly_app_name)
|
67
76
|
end
|
68
77
|
|
69
78
|
def pid_file
|
70
|
-
File.join(app_dir, "#{
|
79
|
+
File.join(app_dir, "#{filesystem_friendly_app_name}.pid")
|
71
80
|
end
|
72
81
|
|
73
82
|
def url_file
|
74
|
-
File.join(app_dir, "#{
|
83
|
+
File.join(app_dir, "#{filesystem_friendly_app_name}.url")
|
75
84
|
end
|
76
85
|
|
77
86
|
def url
|
@@ -79,39 +88,46 @@ module Vegas
|
|
79
88
|
end
|
80
89
|
|
81
90
|
def log_file
|
82
|
-
File.join(app_dir, "#{
|
91
|
+
File.join(app_dir, "#{filesystem_friendly_app_name}.log")
|
83
92
|
end
|
84
93
|
|
85
94
|
def start(path = nil)
|
86
95
|
logger.info "Running with Windows Settings" if WINDOWS
|
87
|
-
logger.info "Starting #{
|
96
|
+
logger.info "Starting #{quoted_app_name}"
|
88
97
|
begin
|
89
98
|
check_for_running(path)
|
90
99
|
find_port
|
91
100
|
write_url
|
92
101
|
launch!(url, path)
|
93
|
-
daemonize! unless options[:foreground]
|
102
|
+
daemonize! unless options[:foreground]
|
94
103
|
run!
|
95
104
|
rescue RuntimeError => e
|
96
|
-
logger.warn "There was an error starting #{
|
105
|
+
logger.warn "There was an error starting #{quoted_app_name}: #{e}"
|
97
106
|
exit
|
98
107
|
end
|
99
108
|
end
|
100
109
|
|
101
110
|
def find_port
|
102
111
|
if @port = options[:port]
|
103
|
-
|
112
|
+
announce_port_attempted
|
113
|
+
|
114
|
+
unless port_open?
|
104
115
|
logger.warn "Port #{port} is already in use. Please try another or don't use -P, for auto-port"
|
105
116
|
end
|
106
117
|
else
|
107
118
|
@port = PORT
|
108
|
-
|
109
|
-
|
119
|
+
announce_port_attempted
|
120
|
+
|
121
|
+
until port_open?
|
110
122
|
@port += 1
|
111
|
-
|
123
|
+
announce_port_attempted
|
112
124
|
end
|
113
125
|
end
|
114
126
|
end
|
127
|
+
|
128
|
+
def announce_port_attempted
|
129
|
+
logger.info "Trying to start #{quoted_app_name} on port #{port}"
|
130
|
+
end
|
115
131
|
|
116
132
|
def port_open?(check_url = nil)
|
117
133
|
begin
|
@@ -130,7 +146,7 @@ module Vegas
|
|
130
146
|
if File.exists?(pid_file) && File.exists?(url_file)
|
131
147
|
running_url = File.read(url_file)
|
132
148
|
if !port_open?(running_url)
|
133
|
-
logger.warn "#{
|
149
|
+
logger.warn "#{quoted_app_name} is already running at #{running_url}"
|
134
150
|
launch!(running_url, path)
|
135
151
|
exit!
|
136
152
|
end
|
@@ -138,11 +154,13 @@ module Vegas
|
|
138
154
|
end
|
139
155
|
|
140
156
|
def run!
|
157
|
+
logger.info "Running with Rack handler: #{@rack_handler.inspect}"
|
158
|
+
|
141
159
|
rack_handler.run app, :Host => host, :Port => port do |server|
|
142
160
|
trap(kill_command) do
|
143
161
|
## Use thins' hard #stop! if available, otherwise just #stop
|
144
162
|
server.respond_to?(:stop!) ? server.stop! : server.stop
|
145
|
-
logger.info "#{
|
163
|
+
logger.info "#{quoted_app_name} received INT ... stopping"
|
146
164
|
delete_pid!
|
147
165
|
end
|
148
166
|
end
|
@@ -185,11 +203,11 @@ module Vegas
|
|
185
203
|
|
186
204
|
def status
|
187
205
|
if File.exists?(pid_file)
|
188
|
-
logger.info "#{
|
206
|
+
logger.info "#{quoted_app_name} running"
|
189
207
|
logger.info "PID #{File.read(pid_file)}"
|
190
208
|
logger.info "URL #{File.read(url_file)}" if File.exists?(url_file)
|
191
209
|
else
|
192
|
-
logger.info "#{
|
210
|
+
logger.info "#{quoted_app_name} not running!"
|
193
211
|
end
|
194
212
|
end
|
195
213
|
|
@@ -201,11 +219,11 @@ module Vegas
|
|
201
219
|
config.sub!(/^__END__\n.*/, '')
|
202
220
|
@app.module_eval(config)
|
203
221
|
end
|
204
|
-
|
222
|
+
|
205
223
|
def self.logger=(logger)
|
206
224
|
@logger = logger
|
207
225
|
end
|
208
|
-
|
226
|
+
|
209
227
|
def self.logger
|
210
228
|
@logger ||= LOGGER if defined?(LOGGER)
|
211
229
|
if !@logger
|
@@ -219,11 +237,45 @@ module Vegas
|
|
219
237
|
def logger
|
220
238
|
self.class.logger
|
221
239
|
end
|
222
|
-
|
223
|
-
|
240
|
+
|
241
|
+
private
|
242
|
+
def setup_rack_handler
|
243
|
+
# First try to set Rack handler via a special hook we honor
|
244
|
+
@rack_handler = if @app.respond_to?(:detect_rack_handler)
|
245
|
+
@app.detect_rack_handler
|
246
|
+
|
247
|
+
# If they aren't using our hook, try to use their @app.server settings
|
248
|
+
elsif @app.respond_to?(:server) and @app.server
|
249
|
+
# If :server isn't set, it returns an array of possibilities,
|
250
|
+
# sorted from most to least preferable.
|
251
|
+
if @app.server.is_a?(Array)
|
252
|
+
handler = nil
|
253
|
+
@app.server.each do |server|
|
254
|
+
begin
|
255
|
+
handler = Rack::Handler.get(server)
|
256
|
+
break
|
257
|
+
rescue NameError => e
|
258
|
+
next
|
259
|
+
end
|
260
|
+
end
|
261
|
+
handler
|
262
|
+
|
263
|
+
# :server might be set explicitly to a single option like "mongrel"
|
264
|
+
else
|
265
|
+
Rack::Handler.get(@app.server)
|
266
|
+
end
|
267
|
+
|
268
|
+
# If all else fails, we'll use Thin
|
269
|
+
else
|
270
|
+
Rack::Handler::Thin
|
271
|
+
end
|
272
|
+
end
|
273
|
+
|
224
274
|
def define_options
|
225
275
|
OptionParser.new("", 24, ' ') do |opts|
|
226
|
-
|
276
|
+
# TODO instead of app_name, we should determine the name of the script
|
277
|
+
# used to invoke Vegas and use that here
|
278
|
+
opts.banner = "Usage: your_executable_name [options]"
|
227
279
|
|
228
280
|
opts.separator ""
|
229
281
|
opts.separator "Vegas options:"
|
@@ -278,7 +330,7 @@ module Vegas
|
|
278
330
|
|
279
331
|
opts.on_tail("--version", "Show version") do
|
280
332
|
if app.respond_to?(:version)
|
281
|
-
puts "#{
|
333
|
+
puts "#{quoted_app_name} #{app.version}"
|
282
334
|
end
|
283
335
|
puts "rack #{Rack::VERSION.join('.')}"
|
284
336
|
puts "sinatra #{Sinatra::VERSION}" if defined?(Sinatra)
|
data/test/test_helper.rb
CHANGED
data/test/test_vegas_runner.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), 'test_helper.rb')
|
2
2
|
|
3
|
-
Vegas::Runner
|
3
|
+
Vegas::Runner.class_eval do
|
4
|
+
remove_const :ROOT_DIR
|
5
|
+
ROOT_DIR = File.join(File.dirname(__FILE__), 'tmp', '.vegas')
|
6
|
+
end
|
4
7
|
|
5
8
|
describe 'Vegas::Runner' do
|
6
9
|
before do
|
@@ -9,9 +12,9 @@ describe 'Vegas::Runner' do
|
|
9
12
|
Vegas::Runner.logger = Logger.new(@log)
|
10
13
|
end
|
11
14
|
|
12
|
-
describe '
|
15
|
+
describe 'creating an instance' do
|
13
16
|
|
14
|
-
describe '
|
17
|
+
describe 'basic usage' do
|
15
18
|
before do
|
16
19
|
Vegas::Runner.any_instance.expects(:system).once
|
17
20
|
vegas(TestApp1, 'vegas_test_app_1', {:sessions => true}, ["route","--debug"])
|
@@ -24,6 +27,14 @@ describe 'Vegas::Runner' do
|
|
24
27
|
it "sets app name" do
|
25
28
|
@vegas.app_name.should == 'vegas_test_app_1'
|
26
29
|
end
|
30
|
+
|
31
|
+
it "sets quoted app name" do
|
32
|
+
@vegas.quoted_app_name.should == "'vegas_test_app_1'"
|
33
|
+
end
|
34
|
+
|
35
|
+
it "sets filesystem friendly app name" do
|
36
|
+
@vegas.filesystem_friendly_app_name.should == 'vegas_test_app_1'
|
37
|
+
end
|
27
38
|
|
28
39
|
it "stores options" do
|
29
40
|
@vegas.options[:sessions].should.be.true
|
@@ -44,24 +55,87 @@ describe 'Vegas::Runner' do
|
|
44
55
|
it "writes a url with the port" do
|
45
56
|
@vegas.url_file.should have_matching_file_content(/0.0.0.0\:#{@vegas.port}/)
|
46
57
|
end
|
58
|
+
|
59
|
+
it "knows where to find the pid file" do
|
60
|
+
@vegas.pid_file.should.equal \
|
61
|
+
File.join(@vegas.app_dir, @vegas.filesystem_friendly_app_name + ".pid")
|
62
|
+
# @vegas.pid_file.should exist_as_file
|
63
|
+
end
|
47
64
|
end
|
65
|
+
|
66
|
+
describe 'basic usage with a funky app name' do
|
67
|
+
before do
|
68
|
+
Vegas::Runner.any_instance.expects(:system).once
|
69
|
+
vegas(TestApp1, 'Funky YEAH!1!', {:sessions => true}, ["route","--debug"])
|
70
|
+
end
|
71
|
+
|
72
|
+
it "sets app" do
|
73
|
+
@vegas.app.should == TestApp1
|
74
|
+
end
|
75
|
+
|
76
|
+
it "sets app name" do
|
77
|
+
@vegas.app_name.should == 'Funky YEAH!1!'
|
78
|
+
end
|
79
|
+
|
80
|
+
it "sets quoted app name" do
|
81
|
+
@vegas.quoted_app_name.should == "'Funky YEAH!1!'"
|
82
|
+
end
|
83
|
+
|
84
|
+
it "sets filesystem friendly app name" do
|
85
|
+
@vegas.filesystem_friendly_app_name.should == 'Funky_YEAH_1_'
|
86
|
+
end
|
87
|
+
|
88
|
+
it "stores options" do
|
89
|
+
@vegas.options[:sessions].should.be.true
|
90
|
+
end
|
48
91
|
|
49
|
-
|
92
|
+
it "puts unparsed args into args" do
|
93
|
+
@vegas.args.should == ["route"]
|
94
|
+
end
|
95
|
+
|
96
|
+
it "parses options into @options" do
|
97
|
+
@vegas.options[:debug].should.be.true
|
98
|
+
end
|
99
|
+
|
100
|
+
it "writes the app dir" do
|
101
|
+
@vegas.app_dir.should exist_as_file
|
102
|
+
end
|
103
|
+
|
104
|
+
it "writes a url with the port" do
|
105
|
+
@vegas.url_file.should have_matching_file_content(/0.0.0.0\:#{@vegas.port}/)
|
106
|
+
end
|
107
|
+
|
108
|
+
it "knows where to find the pid file" do
|
109
|
+
@vegas.pid_file.should.equal \
|
110
|
+
File.join(@vegas.app_dir, @vegas.filesystem_friendly_app_name + ".pid")
|
111
|
+
# @vegas.pid_file.should exist_as_file
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
describe 'with a sinatra app using mongrel for the server' do
|
50
116
|
before do
|
51
|
-
TestApp1.
|
117
|
+
TestApp1.set :server, "mongrel"
|
52
118
|
Vegas::Runner.any_instance.expects(:system).once
|
53
119
|
Rack::Handler::Mongrel.stubs(:run)
|
54
120
|
vegas(TestApp1, 'vegas_test_app_1', {:skip_launch => true, :sessions => true}, ["route","--debug"])
|
55
121
|
end
|
56
|
-
|
122
|
+
|
57
123
|
it 'sets the rack handler automaticaly' do
|
58
124
|
@vegas.rack_handler.should == Rack::Handler::Mongrel
|
59
125
|
end
|
126
|
+
end
|
60
127
|
|
61
|
-
|
62
|
-
|
128
|
+
describe 'with a sinatra app using webrick for the server' do
|
129
|
+
before do
|
130
|
+
TestApp1.set :server, "webrick"
|
131
|
+
Vegas::Runner.any_instance.expects(:system).once
|
132
|
+
Rack::Handler::WEBrick.stubs(:run)
|
133
|
+
vegas(TestApp1, 'vegas_test_app_1', {:skip_launch => true, :sessions => true}, ["route","--debug"])
|
134
|
+
end
|
135
|
+
|
136
|
+
it 'sets the rack handler automaticaly' do
|
137
|
+
@vegas.rack_handler.should == Rack::Handler::WEBrick
|
63
138
|
end
|
64
|
-
|
65
139
|
end
|
66
140
|
|
67
141
|
describe 'with a simple rack app' do
|
data/vegas.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{vegas}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Aaron Quint"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2010-01-08}
|
13
13
|
s.description = %q{Vegas aims to solve the simple problem of creating executable versions of Sinatra/Rack apps. It includes a class Vegas::Runner that wraps Rack/Sinatra applications and provides a simple command line interface and launching mechanism.}
|
14
14
|
s.email = ["aaron@quirkey.com"]
|
15
15
|
s.extra_rdoc_files = [
|
@@ -24,7 +24,6 @@ Gem::Specification.new do |s|
|
|
24
24
|
"Rakefile",
|
25
25
|
"lib/vegas.rb",
|
26
26
|
"lib/vegas/runner.rb",
|
27
|
-
"pkg/vegas-0.1.1.gem",
|
28
27
|
"test/apps.rb",
|
29
28
|
"test/test_app/bin/test_app",
|
30
29
|
"test/test_app/bin/test_rack_app",
|
@@ -52,17 +51,20 @@ Gem::Specification.new do |s|
|
|
52
51
|
|
53
52
|
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
54
53
|
s.add_runtime_dependency(%q<rack>, [">= 1.0.0"])
|
55
|
-
s.add_development_dependency(%q<
|
56
|
-
s.add_development_dependency(%q<
|
54
|
+
s.add_development_dependency(%q<mocha>, ["~> 0.9.8"])
|
55
|
+
s.add_development_dependency(%q<bacon>, ["~> 1.1.0"])
|
56
|
+
s.add_development_dependency(%q<sinatra>, ["~> 0.9.4"])
|
57
57
|
else
|
58
58
|
s.add_dependency(%q<rack>, [">= 1.0.0"])
|
59
|
-
s.add_dependency(%q<
|
60
|
-
s.add_dependency(%q<
|
59
|
+
s.add_dependency(%q<mocha>, ["~> 0.9.8"])
|
60
|
+
s.add_dependency(%q<bacon>, ["~> 1.1.0"])
|
61
|
+
s.add_dependency(%q<sinatra>, ["~> 0.9.4"])
|
61
62
|
end
|
62
63
|
else
|
63
64
|
s.add_dependency(%q<rack>, [">= 1.0.0"])
|
64
|
-
s.add_dependency(%q<
|
65
|
-
s.add_dependency(%q<
|
65
|
+
s.add_dependency(%q<mocha>, ["~> 0.9.8"])
|
66
|
+
s.add_dependency(%q<bacon>, ["~> 1.1.0"])
|
67
|
+
s.add_dependency(%q<sinatra>, ["~> 0.9.4"])
|
66
68
|
end
|
67
69
|
end
|
68
70
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vegas
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Quint
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-01-08 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -22,13 +22,23 @@ dependencies:
|
|
22
22
|
- !ruby/object:Gem::Version
|
23
23
|
version: 1.0.0
|
24
24
|
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: mocha
|
27
|
+
type: :development
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.9.8
|
34
|
+
version:
|
25
35
|
- !ruby/object:Gem::Dependency
|
26
36
|
name: bacon
|
27
37
|
type: :development
|
28
38
|
version_requirement:
|
29
39
|
version_requirements: !ruby/object:Gem::Requirement
|
30
40
|
requirements:
|
31
|
-
- -
|
41
|
+
- - ~>
|
32
42
|
- !ruby/object:Gem::Version
|
33
43
|
version: 1.1.0
|
34
44
|
version:
|
@@ -38,7 +48,7 @@ dependencies:
|
|
38
48
|
version_requirement:
|
39
49
|
version_requirements: !ruby/object:Gem::Requirement
|
40
50
|
requirements:
|
41
|
-
- -
|
51
|
+
- - ~>
|
42
52
|
- !ruby/object:Gem::Version
|
43
53
|
version: 0.9.4
|
44
54
|
version:
|
@@ -60,7 +70,6 @@ files:
|
|
60
70
|
- Rakefile
|
61
71
|
- lib/vegas.rb
|
62
72
|
- lib/vegas/runner.rb
|
63
|
-
- pkg/vegas-0.1.1.gem
|
64
73
|
- test/apps.rb
|
65
74
|
- test/test_app/bin/test_app
|
66
75
|
- test/test_app/bin/test_rack_app
|
data/pkg/vegas-0.1.1.gem
DELETED
Binary file
|