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 CHANGED
@@ -1 +1,5 @@
1
-
1
+ .DS_Store
2
+ test/tmp
3
+ pkg/*
4
+ _layouts
5
+ *.sw?
@@ -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
- s.add_runtime_dependency(%q<rack>, [">= 1.0.0"])
17
- s.add_development_dependency(%q<bacon>, [">= 1.1.0"])
18
- s.add_development_dependency(%q<sinatra>, [">= 0.9.4"])
19
-
20
- end
21
- Jeweler::GemcutterTasks.new
22
- rescue LoadError
23
- puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
24
- end
25
-
26
- Rake::TestTask.new do |t|
27
- t.libs << "test"
28
- t.test_files = FileList['test/test*.rb']
29
- t.verbose = true
30
- end
31
-
32
- Dir['tasks/**/*.rake'].each { |t| load t }
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
@@ -8,7 +8,7 @@ end
8
8
  $LOAD_PATH.unshift File.dirname(__FILE__)
9
9
 
10
10
  module Vegas
11
- VERSION = "0.1.2"
11
+ VERSION = "0.1.3"
12
12
  WINDOWS = !!(RUBY_PLATFORM =~ /(mingw|bccwin|wince|mswin32)/i)
13
13
 
14
14
  autoload :Runner, 'vegas/runner'
@@ -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 gem install win32-process"
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, :rack_handler, :port, :host, :options, :args
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
- # initialize
23
- @app = app
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
- @rack_handler = @app.respond_to?(:detect_rack_handler) ?
30
- @app.send(:detect_rack_handler) : Rack::Handler.get('thin')
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 "#{app_name} options:"
41
+ opts.separator "#{quoted_app_name} options:"
37
42
  yield(self, opts, app)
38
43
  end
39
44
  end
40
45
 
41
- # Call before run if before_run is a Proc
42
- if before_run = options.delete(:before_run) and
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
- # set app options
51
+ # Set app options
48
52
  @host = options[:host] || HOST
49
- if @app.respond_to?(:set)
50
- @app.set(options)
51
- @app.set(:vegas, self)
53
+
54
+ if app.respond_to?(:set)
55
+ app.set(options)
56
+ app.set(:vegas, self)
52
57
  end
53
- # initialize app dir
58
+
59
+ # Make sure app dir is setup
54
60
  FileUtils.mkdir_p(app_dir)
55
- return if options[:start] === false
61
+
62
+ return if options[:start] == false
63
+
56
64
  # evaluate the launch_path
57
- path = if options[:launch_path] && options[:launch_path].respond_to?(:call)
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, app_name)
75
+ File.join(ROOT_DIR, filesystem_friendly_app_name)
67
76
  end
68
77
 
69
78
  def pid_file
70
- File.join(app_dir, "#{app_name}.pid")
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, "#{app_name}.url")
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, "#{app_name}.log")
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 #{app_name}"
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 #{app_name}: #{e}"
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
- if !port_open?
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
- logger.info "Trying to start #{app_name} on Port #{port}"
109
- while !port_open?
119
+ announce_port_attempted
120
+
121
+ until port_open?
110
122
  @port += 1
111
- logger.info "Trying to start #{app_name} on Port #{port}"
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 "#{app_name} is already running at #{running_url}"
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 "#{app_name} received INT ... stopping"
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 "#{app_name} running"
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 "#{app_name} not running!"
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
- private
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
- opts.banner = "Usage: #{app_name} [options]"
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 "#{app_name} #{app.version}"
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)
@@ -48,4 +48,8 @@ module TestHelper
48
48
 
49
49
  end
50
50
 
51
- Bacon::Context.send(:include, TestHelper)
51
+ module Bacon
52
+ summary_on_exit
53
+ # extend TestUnitOutput
54
+ class Context; include TestHelper; end
55
+ end
@@ -1,6 +1,9 @@
1
1
  require File.join(File.dirname(__FILE__), 'test_helper.rb')
2
2
 
3
- Vegas::Runner::ROOT_DIR = File.join(File.dirname(__FILE__), 'tmp', '.vegas')
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 '.new' do
15
+ describe 'creating an instance' do
13
16
 
14
- describe 'with basic usage' do
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
- describe 'with a sinatra app' do
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.expects(:detect_rack_handler).returns(Rack::Handler::Mongrel)
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
- it "sets options on the app" do
62
- @vegas.app.sessions.should.be.true
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
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{vegas}
8
- s.version = "0.1.2"
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{2009-12-28}
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<bacon>, [">= 1.1.0"])
56
- s.add_development_dependency(%q<sinatra>, [">= 0.9.4"])
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<bacon>, [">= 1.1.0"])
60
- s.add_dependency(%q<sinatra>, [">= 0.9.4"])
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<bacon>, [">= 1.1.0"])
65
- s.add_dependency(%q<sinatra>, [">= 0.9.4"])
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.2
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: 2009-12-28 00:00:00 -05:00
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
Binary file