jettywrapper 2.0.3 → 2.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/Gemfile +0 -1
- data/README.md +60 -47
- data/Rakefile +0 -16
- data/jettywrapper.gemspec +2 -1
- data/lib/jettywrapper.rb +78 -15
- data/lib/jettywrapper/version.rb +1 -1
- data/spec/lib/jettywrapper_integration_spec.rb +13 -0
- data/spec/lib/jettywrapper_spec.rb +6 -0
- data/spec/spec_helper.rb +2 -9
- metadata +21 -8
- data/TODO.txt +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad61d470f98b939656823a010312781aee10afd6
|
4
|
+
data.tar.gz: 9bf4d4e60718147234e08acb682c03fb5d8040bd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 82b203a172948e4b526caa378dcb9228eab6cc7a85c46a45570503ef62f5115185848134998d3ddf0eef399f7b7e132e43becf840de8431329f2b4fa4979c823
|
7
|
+
data.tar.gz: 3f51c8de273590e6ff1ea07df495d8ad6a030e306102bb4b389cfc016d86f775a0186b3e9bf7036c13d1280f2dcd10a87806dc3d73f3f5ded7b4ba05fbb18952
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,70 +1,83 @@
|
|
1
1
|
# Jettywrapper [![Version](https://badge.fury.io/gh/projecthydra%2Fjettywrapper.png)](http://badge.fury.io/gh/projecthydra%2Fjettywrapper) [![Build Status](https://travis-ci.org/projecthydra/jettywrapper.png?branch=master)](https://travis-ci.org/projecthydra/jettywrapper)
|
2
2
|
|
3
|
-
|
4
|
-
Jettywrapper provides rake tasks for starting and stopping jetty, as well as the method `Jettywrapper.wrap` that will start
|
5
|
-
the server before the block and stop the server after the block, which is useful for automated testing.
|
3
|
+
NOTICE: Because of changes introduced in Solr 5, we can no longer update jettywrapper to use modern versions of Solr. Therefore we discourage you from using jettywrapper in new projects. No further development is anticipated for jettywrapper. Consider using [solr_wrapper](https://github.com/cbeer/solr_wrapper) and [fcrepo_wrapper](https://github.com/cbeer/fcrepo_wrapper) instead.
|
6
4
|
|
7
|
-
|
8
|
-
[hydra-jetty](https://github.com/projecthydra/hydra-jetty) project zipfile. However, it can be configured to
|
9
|
-
download any Jetty-based project on Github.
|
5
|
+
This gem is designed to make it easier to integrate a jetty servlet container into a project with web service dependencies. This can be especially useful for developing and testing projects requiring, for example, a Solr and/or a Fedora server.
|
10
6
|
|
11
|
-
Jettywrapper
|
7
|
+
Jettywrapper provides rake tasks for starting and stopping jetty, as well as the method `Jettywrapper.wrap` that will start the server before the block and stop the server after the block, which is useful for automated testing.
|
12
8
|
|
13
|
-
|
14
|
-
* ruby 1.9.3
|
15
|
-
* ruby 1.8.7
|
16
|
-
* ree 1.8.7
|
17
|
-
* jruby 1.6.6+
|
9
|
+
Jettywrapper can be configured to work with any Jetty-based zip file, such as [blacklight-jetty](https://github.com/projectblacklight/blacklight-jetty) (Solr only) or [hydra-jetty](https://github.com/projecthydra/hydra-jetty) (Solr + Fedora). Jettywrapper uses hydra-jetty by default.
|
18
10
|
|
19
|
-
##
|
11
|
+
## Requirements
|
20
12
|
|
21
|
-
Jettywrapper
|
22
|
-
|
23
|
-
|
13
|
+
1. ruby -- Jettywrapper supports the ruby versions in its [.travis.yml](.travis.yml) file.
|
14
|
+
2. bundler -- this ruby gem must be installed.
|
15
|
+
3. java -- Jetty is a java based servlet container; the version of java required depends on the version of jetty you are using (in the jetty-based zip file).
|
24
16
|
|
25
|
-
|
26
|
-
jetty_port: 8983
|
27
|
-
java_opts:
|
28
|
-
- "-XX:MaxPermSize=128m"
|
29
|
-
- "-Xmx256m"
|
17
|
+
## Installation
|
30
18
|
|
31
|
-
|
19
|
+
Generally, you will only use a jetty instance for your project's web service dependencies during development and testing, not for production. So you would add this to your Gemfile:
|
20
|
+
|
21
|
+
```
|
22
|
+
group :development, :test do
|
23
|
+
gem 'jettywrapper'
|
24
|
+
end
|
25
|
+
```
|
26
|
+
|
27
|
+
Or, if your project is a gem, you would add this to your .gemspec file:
|
28
|
+
|
29
|
+
```
|
30
|
+
Gem::Specification.new do |s|
|
31
|
+
s.add_development_dependency 'jettywrapper'
|
32
|
+
end
|
33
|
+
```
|
34
|
+
|
35
|
+
Then execute:
|
36
|
+
|
37
|
+
$ bundle
|
38
|
+
|
39
|
+
Or install it yourself as:
|
40
|
+
|
41
|
+
$ gem install jettywrapper
|
32
42
|
|
33
|
-
Jettywrapper.hydra_jetty_version = "v1.2.3"
|
34
43
|
|
35
|
-
|
44
|
+
## Usage
|
36
45
|
|
37
|
-
|
46
|
+
### Configuration
|
38
47
|
|
39
|
-
|
40
|
-
Basically, any url that Github provides as a *.zip file will work.
|
48
|
+
See [Configuring jettywrapper](https://github.com/projecthydra/jettywrapper/wiki/Configuring-jettywrapper).
|
41
49
|
|
42
|
-
|
50
|
+
If you don't need both Solr and Fedora, we recommend you avoid the default [hydra-jetty](https://github.com/projecthydra/hydra-jetty). If you only need Solr, use [blacklight-jetty](https://github.com/projectblacklight/blacklight-jetty).
|
51
|
+
|
52
|
+
### Gotchas
|
53
|
+
|
54
|
+
* Jetty may take a while to spin up
|
55
|
+
* Jetty may not shut down cleanly
|
56
|
+
|
57
|
+
See [Using jettywrapper](https://github.com/projecthydra/jettywrapper/wiki/Using-jettywrapper) for more information and what to do.
|
58
|
+
|
59
|
+
### Example Rake Task
|
60
|
+
|
61
|
+
See [Using jettywrapper](https://github.com/projecthydra/jettywrapper/wiki/Using-jettywrapper) for more information.
|
43
62
|
|
44
63
|
```ruby
|
45
64
|
require 'jettywrapper'
|
46
|
-
|
47
|
-
desc
|
48
|
-
task :
|
49
|
-
|
50
|
-
|
51
|
-
|
65
|
+
|
66
|
+
desc 'run the tests for continuous integration'
|
67
|
+
task ci: ['jetty:clean', 'myproj:configure_jetty'] do
|
68
|
+
ENV['environment'] = 'test'
|
69
|
+
jetty_params = Jettywrapper.load_config
|
70
|
+
jetty_params[:startup_wait] = 60
|
71
|
+
|
72
|
+
error = nil
|
73
|
+
error = Jettywrapper.wrap(jetty_params) do
|
74
|
+
# run the tests
|
75
|
+
Rake::Task['spec'].invoke
|
52
76
|
end
|
53
77
|
raise "test failures: #{error}" if error
|
54
78
|
end
|
55
79
|
```
|
56
80
|
|
57
|
-
##
|
58
|
-
|
59
|
-
If you haven't already, clone the git repository
|
60
|
-
|
61
|
-
git clone git@github.com:projecthydra/jettywrapper.git
|
62
|
-
cd jettywrapper
|
63
|
-
|
64
|
-
Install the gems
|
65
|
-
|
66
|
-
bundle install
|
67
|
-
|
68
|
-
Run the tests
|
81
|
+
## Contributing
|
69
82
|
|
70
|
-
|
83
|
+
See [CONTRIBUTING.md](https://github.com/projecthydra/jettywrapper/blob/master/CONTRIBUTING.md) to help us make this project better.
|
data/Rakefile
CHANGED
@@ -20,21 +20,6 @@ RSpec::Core::RakeTask.new(:spec => 'jetty:clean') do |spec|
|
|
20
20
|
# spec.spec_files = FileList['spec/**/*_spec.rb']
|
21
21
|
end
|
22
22
|
|
23
|
-
RSpec::Core::RakeTask.new(:coverage) do |spec|
|
24
|
-
ruby_engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : "ruby"
|
25
|
-
ENV['COVERAGE'] = 'true' unless ruby_engine == 'jruby'
|
26
|
-
|
27
|
-
if ENV['COVERAGE'] and RUBY_VERSION =~ /^1.8/
|
28
|
-
spec.rcov = true
|
29
|
-
spec.rcov_opts = %w{--exclude spec\/*,gems\/*,ruby\/* --aggregate coverage.data}
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
task :clean do
|
34
|
-
puts 'Cleaning old coverage.data'
|
35
|
-
FileUtils.rm('coverage.data') if(File.exists? 'coverage.data')
|
36
|
-
end
|
37
|
-
|
38
23
|
# Use yard to build docs
|
39
24
|
begin
|
40
25
|
require 'yard'
|
@@ -54,5 +39,4 @@ rescue LoadError
|
|
54
39
|
end
|
55
40
|
end
|
56
41
|
|
57
|
-
#task :default => [:coverage, :doc]
|
58
42
|
task :default => [:spec]
|
data/jettywrapper.gemspec
CHANGED
@@ -23,11 +23,12 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.add_dependency "childprocess"
|
24
24
|
s.add_dependency "i18n"
|
25
25
|
s.add_dependency "activesupport", ">=3.0.0"
|
26
|
-
s.add_dependency 'rubyzip'
|
26
|
+
s.add_dependency 'rubyzip', "~> 1.0"
|
27
27
|
|
28
28
|
s.add_development_dependency "rspec", '~> 3.2'
|
29
29
|
s.add_development_dependency "rspec-its"
|
30
30
|
s.add_development_dependency 'rake'
|
31
|
+
s.add_development_dependency 'simplecov'
|
31
32
|
|
32
33
|
s.add_development_dependency 'yard'
|
33
34
|
end
|
data/lib/jettywrapper.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'singleton'
|
2
1
|
require 'fileutils'
|
3
2
|
require 'shellwords'
|
4
3
|
require 'socket'
|
@@ -10,14 +9,13 @@ require 'erb'
|
|
10
9
|
require 'yaml'
|
11
10
|
require 'logger'
|
12
11
|
require 'open-uri'
|
12
|
+
require 'tempfile'
|
13
13
|
require 'zip'
|
14
14
|
|
15
|
-
Dir[File.expand_path(File.join(File.dirname(__FILE__),"tasks/*.rake"))].each { |ext| load ext } if defined?(Rake)
|
15
|
+
Dir[File.expand_path(File.join(File.dirname(__FILE__),"tasks/*.rake"))].each { |ext| load ext } if (defined?(Rake::VERSION))
|
16
16
|
|
17
|
-
# Jettywrapper is a Singleton class, so you can only create one jetty instance at a time.
|
18
17
|
class Jettywrapper
|
19
18
|
|
20
|
-
include Singleton
|
21
19
|
include ActiveSupport::Benchmarkable
|
22
20
|
|
23
21
|
attr_accessor :jetty_home # Jetty's home directory
|
@@ -27,16 +25,29 @@ class Jettywrapper
|
|
27
25
|
attr_accessor :solr_home # Solr's home directory. Default is jetty_home/solr
|
28
26
|
attr_accessor :base_path # The root of the application. Used for determining where log files and PID files should go.
|
29
27
|
attr_accessor :java_opts # Options to pass to java (ex. ["-Xmx512mb", "-Xms128mb"])
|
28
|
+
attr_accessor :java_command # Path to the Java executable
|
29
|
+
attr_accessor :java_version # Minimum java version
|
30
30
|
attr_accessor :jetty_opts # Options to pass to jetty (ex. ["etc/my_jetty.xml", "etc/other.xml"] as in http://wiki.eclipse.org/Jetty/Reference/jetty.xml_usage
|
31
31
|
|
32
|
-
# configure the singleton with some defaults
|
33
32
|
def initialize(params = {})
|
34
33
|
self.base_path = self.class.app_root
|
34
|
+
configure(params)
|
35
35
|
end
|
36
36
|
|
37
|
+
def configure params
|
38
|
+
self.quiet = params[:quiet].nil? ? true : params[:quiet]
|
39
|
+
self.jetty_home = params[:jetty_home ] || File.expand_path(File.join(self.base_path, 'jetty'))
|
40
|
+
self.solr_home = params[:solr_home ] || File.join( self.jetty_home, "solr")
|
41
|
+
self.port = params[:jetty_port ] || 8888
|
42
|
+
self.startup_wait = params[:startup_wait] || 5
|
43
|
+
self.java_opts = params[:java_opts ] || []
|
44
|
+
self.java_command = params[:java_command] || default_java_command
|
45
|
+
self.java_version = params[:java_version]
|
46
|
+
self.jetty_opts = params[:jetty_opts ] || []
|
47
|
+
end
|
37
48
|
|
38
49
|
# Methods inside of the class << self block can be called directly on Jettywrapper, as class methods.
|
39
|
-
# Methods outside the class << self block must be called on Jettywrapper.instance, as instance methods.
|
50
|
+
# Methods outside the class << self block must be called on Jettywrapper.instance or a Jettywrapper object, as instance methods.
|
40
51
|
class << self
|
41
52
|
|
42
53
|
attr_writer :hydra_jetty_version, :url, :tmp_dir, :jetty_dir, :env
|
@@ -193,17 +204,14 @@ class Jettywrapper
|
|
193
204
|
def configure(params = {})
|
194
205
|
jetty_server = self.instance
|
195
206
|
jetty_server.reset_process!
|
196
|
-
jetty_server.
|
197
|
-
|
198
|
-
jetty_server.jetty_home = params[:jetty_home] || File.expand_path(File.join(app_root, 'jetty'))
|
199
|
-
jetty_server.solr_home = params[:solr_home] || File.join( jetty_server.jetty_home, "solr")
|
200
|
-
jetty_server.port = params[:jetty_port] || 8888
|
201
|
-
jetty_server.startup_wait = params[:startup_wait] || 5
|
202
|
-
jetty_server.java_opts = params[:java_opts] || []
|
203
|
-
jetty_server.jetty_opts = params[:jetty_opts] || []
|
207
|
+
jetty_server.configure params
|
204
208
|
return jetty_server
|
205
209
|
end
|
206
210
|
|
211
|
+
def instance
|
212
|
+
@instance ||= Jettywrapper.new
|
213
|
+
end
|
214
|
+
|
207
215
|
# Wrap the tests. Startup jetty, yield to the test task, capture any errors, shutdown
|
208
216
|
# jetty, and return the error.
|
209
217
|
# @example Using this method in a rake task
|
@@ -324,6 +332,35 @@ class Jettywrapper
|
|
324
332
|
end
|
325
333
|
end
|
326
334
|
|
335
|
+
def check_java_version! java_path, required_java_version
|
336
|
+
Tempfile.open("java-version-output") do |f|
|
337
|
+
process = ChildProcess.build(java_path, "-version")
|
338
|
+
process.io.stderr = f
|
339
|
+
process.start
|
340
|
+
|
341
|
+
begin
|
342
|
+
process.poll_for_exit(10)
|
343
|
+
rescue ChildProcess::TimeoutError
|
344
|
+
process.stop # tries increasingly harsher methods to kill the process.
|
345
|
+
end
|
346
|
+
|
347
|
+
f.rewind
|
348
|
+
err = f.read
|
349
|
+
|
350
|
+
java_version = if version = err.match(/java version "([^"]+)"/)
|
351
|
+
version[1]
|
352
|
+
else
|
353
|
+
raise "Java not found, or an error was encountered when running `#{java_path} -version`: #{err}"
|
354
|
+
end
|
355
|
+
|
356
|
+
unless Gem::Dependency.new('', required_java_version.gsub("_", ".")).match?('', java_version.gsub("_", "."))
|
357
|
+
raise "Java #{required_java_version} is required to run Jetty. Found Java #{java_version} when running `#{java_path} -version`."
|
358
|
+
end
|
359
|
+
end
|
360
|
+
|
361
|
+
true
|
362
|
+
end
|
363
|
+
|
327
364
|
def logger=(logger)
|
328
365
|
@@logger = logger
|
329
366
|
end
|
@@ -342,7 +379,7 @@ class Jettywrapper
|
|
342
379
|
|
343
380
|
# What command is being run to invoke jetty?
|
344
381
|
def jetty_command
|
345
|
-
[
|
382
|
+
[java_command, java_variables, java_opts, "-jar", "start.jar", jetty_opts].flatten
|
346
383
|
end
|
347
384
|
|
348
385
|
def java_variables
|
@@ -350,6 +387,12 @@ class Jettywrapper
|
|
350
387
|
"-Dsolr.solr.home=#{Shellwords.escape(@solr_home)}"]
|
351
388
|
end
|
352
389
|
|
390
|
+
def check_java_version!
|
391
|
+
if java_version
|
392
|
+
@checked_java_version ||= Jettywrapper.check_java_version!(java_command, java_version)
|
393
|
+
end
|
394
|
+
end
|
395
|
+
|
353
396
|
# Start the jetty server. Check the pid file to see if it is running already,
|
354
397
|
# and stop it if so. After you start jetty, write the PID to a file.
|
355
398
|
# This is the instance start method. It must be called on Jettywrapper.instance
|
@@ -363,6 +406,8 @@ class Jettywrapper
|
|
363
406
|
logger.debug "jetty_home: #{@jetty_home}"
|
364
407
|
logger.debug "jetty_command: #{jetty_command.join(' ')}"
|
365
408
|
|
409
|
+
check_java_version!
|
410
|
+
|
366
411
|
# Check to see if we can start.
|
367
412
|
# 1. If there is a pid, check to see if it is really running
|
368
413
|
# 2. Check to see if anything is blocking the port we want to use
|
@@ -485,4 +530,22 @@ class Jettywrapper
|
|
485
530
|
def pid
|
486
531
|
File.open( pid_path ) { |f| return f.gets.to_i } if File.exist?(pid_path)
|
487
532
|
end
|
533
|
+
|
534
|
+
private
|
535
|
+
|
536
|
+
def default_java_command
|
537
|
+
# Use the same JAVA_HOME lookup as Solr
|
538
|
+
@default_java_command ||= if ENV["JAVA_HOME"]
|
539
|
+
if File.exists? File.join(ENV["JAVA_HOME"], "bin", "java")
|
540
|
+
File.join(ENV["JAVA_HOME"], "bin", "java")
|
541
|
+
end
|
542
|
+
|
543
|
+
if File.exists? File.join(ENV["JAVA_HOME"], "amd64", "bin", "java")
|
544
|
+
File.join(ENV["JAVA_HOME"], "amd64", "bin", "java")
|
545
|
+
end
|
546
|
+
end
|
547
|
+
|
548
|
+
@default_java_command ||= "java"
|
549
|
+
end
|
550
|
+
|
488
551
|
end
|
data/lib/jettywrapper/version.rb
CHANGED
@@ -104,6 +104,19 @@ module Hydra
|
|
104
104
|
end
|
105
105
|
end
|
106
106
|
|
107
|
+
describe "#check_java_version!" do
|
108
|
+
it "should check for a required minimum version of java" do
|
109
|
+
expect(Jettywrapper.check_java_version!("java", ">= 1.2")).to eq true
|
110
|
+
end
|
111
|
+
|
112
|
+
it "should raise an exception if java can't be found" do
|
113
|
+
expect { Jettywrapper.check_java_version!("/bin/cat", ">= 1.2") }.to raise_error /Java not found/
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should raise an exception if the version of java is not new enough" do
|
117
|
+
expect { Jettywrapper.check_java_version!("java", ">= 999.999") }.to raise_error /999.999 is required to run Jetty/
|
118
|
+
end
|
119
|
+
end
|
107
120
|
end
|
108
121
|
end
|
109
122
|
end
|
@@ -364,6 +364,12 @@ require 'fileutils'
|
|
364
364
|
expect(File.file? swp.pid_path).to eql(false)
|
365
365
|
end
|
366
366
|
|
367
|
+
it "can pass the java executable in the configuration" do
|
368
|
+
subject = Jettywrapper.new(java_command: "/dev/null/java")
|
369
|
+
allow_any_instance_of(Jettywrapper).to receive(:process).and_return(double('proc', :start => nil, :pid=>2323))
|
370
|
+
expect(subject.jetty_command.first).to eq "/dev/null/java"
|
371
|
+
end
|
372
|
+
|
367
373
|
describe "creates a pid file" do
|
368
374
|
let(:ts) { Jettywrapper.configure(@jetty_params) }
|
369
375
|
describe "when the environment isn't set" do
|
data/spec/spec_helper.rb
CHANGED
@@ -1,12 +1,5 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
if ENV['COVERAGE'] and RUBY_VERSION =~ /^1.9/
|
4
|
-
require 'simplecov'
|
5
|
-
require 'simplecov-rcov'
|
6
|
-
|
7
|
-
SimpleCov.formatter = SimpleCov::Formatter::RcovFormatter
|
8
|
-
SimpleCov.start
|
9
|
-
end
|
1
|
+
require 'simplecov'
|
2
|
+
SimpleCov.start
|
10
3
|
|
11
4
|
require 'rspec/its'
|
12
5
|
require 'jettywrapper'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jettywrapper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris Beer
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2016-10-12 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: logger
|
@@ -72,16 +72,16 @@ dependencies:
|
|
72
72
|
name: rubyzip
|
73
73
|
requirement: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- - "
|
75
|
+
- - "~>"
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
77
|
+
version: '1.0'
|
78
78
|
type: :runtime
|
79
79
|
prerelease: false
|
80
80
|
version_requirements: !ruby/object:Gem::Requirement
|
81
81
|
requirements:
|
82
|
-
- - "
|
82
|
+
- - "~>"
|
83
83
|
- !ruby/object:Gem::Version
|
84
|
-
version: '0'
|
84
|
+
version: '1.0'
|
85
85
|
- !ruby/object:Gem::Dependency
|
86
86
|
name: rspec
|
87
87
|
requirement: !ruby/object:Gem::Requirement
|
@@ -124,6 +124,20 @@ dependencies:
|
|
124
124
|
- - ">="
|
125
125
|
- !ruby/object:Gem::Version
|
126
126
|
version: '0'
|
127
|
+
- !ruby/object:Gem::Dependency
|
128
|
+
name: simplecov
|
129
|
+
requirement: !ruby/object:Gem::Requirement
|
130
|
+
requirements:
|
131
|
+
- - ">="
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
type: :development
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - ">="
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0'
|
127
141
|
- !ruby/object:Gem::Dependency
|
128
142
|
name: yard
|
129
143
|
requirement: !ruby/object:Gem::Requirement
|
@@ -156,7 +170,6 @@ files:
|
|
156
170
|
- LICENSE
|
157
171
|
- README.md
|
158
172
|
- Rakefile
|
159
|
-
- TODO.txt
|
160
173
|
- config/jetty.yml
|
161
174
|
- gemfiles/rails4.1.gemfile
|
162
175
|
- gemfiles/rails4.2.gemfile
|
@@ -188,7 +201,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
188
201
|
version: 1.3.6
|
189
202
|
requirements: []
|
190
203
|
rubyforge_project:
|
191
|
-
rubygems_version: 2.
|
204
|
+
rubygems_version: 2.5.1
|
192
205
|
signing_key:
|
193
206
|
specification_version: 4
|
194
207
|
summary: Convenience tasks for working with jetty from within a ruby project.
|
data/TODO.txt
DELETED