khronos 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. data/.rspec +1 -0
  2. data/Gemfile +18 -0
  3. data/bin/khronos +9 -0
  4. data/config/.config.yml.un~ +0 -0
  5. data/config/.environment.yml.un~ +0 -0
  6. data/config/.redis.yml.un~ +0 -0
  7. data/config/.storage.yml.un~ +0 -0
  8. data/config/environment.yml +11 -0
  9. data/config.ru +7 -0
  10. data/khronos.gemspec +26 -0
  11. data/lib/.khronos.rb.un~ +0 -0
  12. data/lib/.scheduler.rb.swp +0 -0
  13. data/lib/.scheduler.rb.un~ +0 -0
  14. data/lib/khronos/.config.rb.un~ +0 -0
  15. data/lib/khronos/.controller.rb.un~ +0 -0
  16. data/lib/khronos/.runner.rb.un~ +0 -0
  17. data/lib/khronos/.schedule.rb.un~ +0 -0
  18. data/lib/khronos/.scheduler.rb.un~ +0 -0
  19. data/lib/khronos/.server.rb.un~ +0 -0
  20. data/lib/khronos/.storage.rb.un~ +0 -0
  21. data/lib/khronos/.task.rb.un~ +0 -0
  22. data/lib/khronos/.version.rb.swp +0 -0
  23. data/lib/khronos/.version.rb.un~ +0 -0
  24. data/lib/khronos/config.rb +28 -0
  25. data/lib/khronos/controller.rb +26 -0
  26. data/lib/khronos/runner.rb +11 -0
  27. data/lib/khronos/scheduler.rb +12 -0
  28. data/lib/khronos/server.rb +34 -0
  29. data/lib/khronos/storage/adapter/.client.rb.un~ +0 -0
  30. data/lib/khronos/storage/adapter/.memcached.rb.swp +0 -0
  31. data/lib/khronos/storage/adapter/.memcached.rb.un~ +0 -0
  32. data/lib/khronos/storage/adapter/.mongo.rb.un~ +0 -0
  33. data/lib/khronos/storage/adapter/.mongodb.rb.swp +0 -0
  34. data/lib/khronos/storage/adapter/.mongodb.rb.un~ +0 -0
  35. data/lib/khronos/storage/adapter/.postgres.rb.un~ +0 -0
  36. data/lib/khronos/storage/adapter/.redis.rb.swp +0 -0
  37. data/lib/khronos/storage/adapter/.redis.rb.un~ +0 -0
  38. data/lib/khronos/storage/adapter/mongo/.mongo.rb.un~ +0 -0
  39. data/lib/khronos/storage/adapter/mongo/.schedule.rb.un~ +0 -0
  40. data/lib/khronos/storage/adapter/mongo/.schedule_log.rb.un~ +0 -0
  41. data/lib/khronos/storage/adapter/mongo/schedule.rb +20 -0
  42. data/lib/khronos/storage/adapter/mongo/schedule_log.rb +19 -0
  43. data/lib/khronos/storage/adapter/mongo.rb +13 -0
  44. data/lib/khronos/storage/adapter/postgres/.schedule.rb.un~ +0 -0
  45. data/lib/khronos/storage/adapter/postgres/.schedule_log.rb.un~ +0 -0
  46. data/lib/khronos/storage/adapter/postgres/schedule.rb +13 -0
  47. data/lib/khronos/storage/adapter/postgres/schedule_log.rb +13 -0
  48. data/lib/khronos/storage/adapter/postgres.rb +15 -0
  49. data/lib/khronos/storage/adapter.rb +0 -0
  50. data/lib/khronos/storage/db/migrate/.schedule.rb.un~ +0 -0
  51. data/lib/khronos/storage/db/migrate/.schedule_log.rb.un~ +0 -0
  52. data/lib/khronos/storage/db/migrate/schedule.rb +15 -0
  53. data/lib/khronos/storage/db/migrate/schedule_log.rb +16 -0
  54. data/lib/khronos/storage.rb +26 -0
  55. data/lib/khronos/version.rb +3 -0
  56. data/lib/khronos.rb +20 -0
  57. data/spec/.spec_helper.rb.un~ +0 -0
  58. data/spec/functional/.client_spec.rb.un~ +0 -0
  59. data/spec/functional/client_spec.rb +24 -0
  60. data/spec/integration/.server_spec.rb.un~ +0 -0
  61. data/spec/integration/server_spec.rb +31 -0
  62. data/spec/spec_helper.rb +18 -0
  63. metadata +194 -0
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile ADDED
@@ -0,0 +1,18 @@
1
+ source :rubygems
2
+ gemspec
3
+
4
+ group :test do
5
+ # Used for time functions
6
+ gem 'activesupport', "~> 3.2.8"
7
+
8
+ gem 'simplecov', '= 0.6.4'
9
+
10
+ gem 'rspec'
11
+ gem 'rack-test'
12
+ gem "fakefs", "~> 0.4.0"
13
+ gem "delorean", "~> 2.0.0"
14
+
15
+ gem 'redis'
16
+ gem 'memcached'
17
+ gem 'mongo'
18
+ end
data/bin/khronos ADDED
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/ruby
2
+ $: << 'lib'
3
+
4
+ ENV['RACK_ENV'] ||= 'production'
5
+
6
+ require 'readline'
7
+ require 'khronos'
8
+
9
+ run Khronos::Server
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,11 @@
1
+ production:
2
+ storage: redis://localhost:6379/0
3
+ interval: 5
4
+
5
+ development:
6
+ storage: redis://localhost:6379/0
7
+ interval: 1
8
+
9
+ test:
10
+ storage: redis://localhost:6379/10
11
+ interval: 1
data/config.ru ADDED
@@ -0,0 +1,7 @@
1
+ $: << 'lib'
2
+ require 'rubygems'
3
+ require 'bundler/setup'
4
+ require 'active_support/all'
5
+ require 'khronos'
6
+
7
+ run Khronos::Server
data/khronos.gemspec ADDED
@@ -0,0 +1,26 @@
1
+ # encoding: utf-8
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+ require 'khronos/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "khronos"
7
+ s.version = Khronos::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Endel Dreyer"]
10
+ s.email = ["endel@ocapi.com.br"]
11
+ s.homepage = "http://github.com/ocapi/scraper"
12
+
13
+ s.summary = "Ruby HTTP Job Scheduler Interface."
14
+ s.description = "Advanced Cron replacement for the cloud."
15
+ s.licenses = ['MIT']
16
+
17
+ s.add_dependency "sinatra", '~> 1.3.3'
18
+ s.add_dependency 'mongoid', '~> 3.0.5'
19
+ s.add_dependency 'activerecord', '~> 3.2.8'
20
+ s.add_dependency 'json', '~> 1.7.5'
21
+ s.add_dependency 'activesupport', '~> 3.2.8'
22
+
23
+ s.files = `git ls-files`.split("\n")
24
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
25
+ s.require_paths = ["lib"]
26
+ end
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,28 @@
1
+ require 'singleton'
2
+ require 'yaml'
3
+
4
+ module Khronos
5
+ class Config
6
+ include Singleton
7
+ attr_reader :settings
8
+
9
+ def load!(file_path, env='development')
10
+ @settings = YAML.load_file(file_path)[env]
11
+ ENV['KHRONOS_STORAGE'] = @settings['storage']
12
+ end
13
+
14
+ def get(key)
15
+ @settings[key.to_s]
16
+ end
17
+
18
+ def set(key, value)
19
+ @settings[key.to_s] = value
20
+ end
21
+
22
+ def method_missing(name, *args, &block)
23
+ self.get(name.to_s)
24
+ end
25
+ end
26
+ end
27
+
28
+ Khronos::Config.instance.load('config.yml')
@@ -0,0 +1,26 @@
1
+ module Khronos
2
+ class Controller
3
+ attr_reader :scheduler, :runner, :interval
4
+
5
+ def initialize
6
+ @runner = Runner.new
7
+ @scheduler = Scheduler.new
8
+ @scheduler.add_observer(@runner)
9
+ end
10
+
11
+ def start!
12
+ loop do
13
+ puts "Tick..."
14
+
15
+ if rand(500) == 1
16
+ puts "I'm so lucky!"
17
+ end
18
+
19
+ #
20
+ # Sleep 'interval' seconds
21
+ #
22
+ sleep(Config.instance.interval)
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,11 @@
1
+ require 'observer'
2
+
3
+ module Khronos
4
+ class Runner
5
+
6
+ def update(time, command)
7
+ puts "#{time.inspect} => #{command.inspect}"
8
+ end
9
+
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ require 'observer'
2
+
3
+ module Khronos
4
+ class Scheduler
5
+ include Observable
6
+
7
+ def run
8
+ end
9
+
10
+ end
11
+ end
12
+
@@ -0,0 +1,34 @@
1
+ require 'sinatra'
2
+
3
+ module Khronos
4
+ class Server < Sinatra::Base
5
+ set :storage, Storage.new
6
+
7
+ # Retrieves scheduling data from a context
8
+ #
9
+ # @return [Hash] JSON
10
+ get '/' do
11
+ context = retrieve_context!
12
+ settings.storage.get(context).to_json
13
+ end
14
+
15
+ # Creates or updates a schedule from a context
16
+ #
17
+ # @param [String]
18
+ #
19
+ # @return [Hash] Context JSON status hash
20
+ put '/' do
21
+ context = retrieve_context!
22
+ puts params.inspect
23
+ context.to_json
24
+ end
25
+
26
+ private
27
+
28
+ def retrieve_context!
29
+ halt 400, "Missing 'context' on query string." unless params[:context]
30
+ (params[:namespace].nil?) ? params[:context] : "#{params[:namespace]}:#{params[:context]}"
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,20 @@
1
+ module Khronos
2
+ module Storage
3
+ module Adapter
4
+
5
+ module Mongo
6
+ class Schedule
7
+ include Mongoid::Document
8
+
9
+ field :namespace, :type => String
10
+ field :context, :type => String
11
+ field :at, :type => DateTime
12
+ field :recurring, :type => Integer
13
+
14
+ has_many :logs, :class_name => ScheduleLog
15
+ end
16
+ end
17
+
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,19 @@
1
+
2
+ module Khronos
3
+ module Storage
4
+ module Adapter
5
+
6
+ module Mongo
7
+ class ScheduleLog
8
+ include Mongoid::Document
9
+
10
+ field :started_at, :type => DateTime
11
+ field :finished_at, :type => DateTime
12
+
13
+ belongs_to :schedule
14
+ end
15
+ end
16
+
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,13 @@
1
+ require 'mongo'
2
+
3
+ module Khronos
4
+ module Storage
5
+ module Adapter
6
+
7
+ module Mongo
8
+ end
9
+
10
+ end
11
+ end
12
+ end
13
+
@@ -0,0 +1,13 @@
1
+ module Khronos
2
+ module Storage
3
+ module Adapter
4
+
5
+ module Postgres
6
+ class Schedule < ActiveRecord::Base
7
+ has_many :logs, :class_name => ScheduleLog
8
+ end
9
+ end
10
+
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module Khronos
2
+ module Storage
3
+ module Adapter
4
+
5
+ module Postgres
6
+ class ScheduleLog < ActiveRecord::Base
7
+ belongs_to :schedule
8
+ end
9
+ end
10
+
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,15 @@
1
+ require 'activerecord'
2
+ require 'pg'
3
+
4
+ module Khronos
5
+ module Storage
6
+ module Adapter
7
+
8
+ module Postgres
9
+ end
10
+
11
+ end
12
+ end
13
+ end
14
+
15
+
File without changes
@@ -0,0 +1,15 @@
1
+ class CreateSchedule < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :schedules do |t|
4
+ t.string :namespace, :limit => 100, :null => true
5
+ t.string :context, :limit => 100, :null => false
6
+ t.datetime :at, :null => false
7
+ t.integer :recurring, :null => false
8
+ end
9
+ end
10
+
11
+ def self.down
12
+ drop_table :schedules
13
+ end
14
+ end
15
+
@@ -0,0 +1,16 @@
1
+ class CreateSchedule < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :schedule_logs do |t|
4
+ t.integer :schedule_id, :null => false
5
+
6
+ t.datetime :started_at, :null => false
7
+ t.datetime :finished_at, :null => true
8
+ end
9
+ end
10
+
11
+ def self.down
12
+ drop_table :schedule_logs
13
+ end
14
+ end
15
+
16
+
@@ -0,0 +1,26 @@
1
+ require 'delegate'
2
+ require 'uri'
3
+
4
+ module Khronos
5
+ class Storage < Delegator
6
+ attr_reader :uri, :adapter
7
+
8
+ def initialize(url=ENV['KHRONOS_STORAGE'])
9
+ unless url.nil?
10
+ @uri = URI.parse(url)
11
+
12
+ require "khronos/adapter/#{@uri.scheme}"
13
+ __setobj__(Adapter.const_get(@uri.scheme.capitalize).new(@uri))
14
+ end
15
+ end
16
+
17
+ def __getobj__
18
+ @adapter
19
+ end
20
+
21
+ def __setobj__(adapter)
22
+ @adapter = adapter
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,3 @@
1
+ module Khronos
2
+ VERSION = '0.0.0'
3
+ end
data/lib/khronos.rb ADDED
@@ -0,0 +1,20 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ require 'bundler/setup'
4
+ require 'json'
5
+
6
+ module Khronos
7
+ autoload :Config, 'khronos/config'
8
+
9
+ autoload :Storage, 'khronos/storage'
10
+ autoload :Server, 'khronos/server'
11
+
12
+ autoload :Scheduler, 'khronos/scheduler'
13
+ autoload :Runner, 'khronos/runner'
14
+ autoload :Controller, 'khronos/controller'
15
+ end
16
+
17
+ Khronos::Config.instance.load!('config/environment.yml', ENV['RACK_ENV'])
18
+
19
+ controller = Khronos::Controller.new
20
+ controller.start!
Binary file
Binary file
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ describe Khronos::Storage do
4
+ subject { Khronos::Storage }
5
+
6
+ describe 'adapters' do
7
+
8
+ it "should identify redis adapter" do
9
+ client = subject.new('redis://127.0.0.1:6379/0')
10
+ client.adapter.should be_a_instance_of Khronos::Adapter::Redis
11
+ end
12
+
13
+ xit "should identify memcached adapter" do
14
+ client = subject.new('memcached://127.0.0.1:6379/test')
15
+ client.adapter.should be_a_instance_of Khronos::Adapter::Memcached
16
+ end
17
+
18
+ xit "should identify mongodb adapter" do
19
+ client = subject.new('mongodb://127.0.0.1:6379/test')
20
+ client.adapter.should be_a_instance_of Khronos::Adapter::Mongodb
21
+ end
22
+
23
+ end
24
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ describe Khronos::Server do
4
+ include Rack::Test::Methods
5
+
6
+ def app
7
+ Khronos::Server
8
+ end
9
+
10
+ it "shouldn't accept request without context" do
11
+ get('/')
12
+ last_response.status.should == 400
13
+ end
14
+
15
+ it "should accept requests with no data" do
16
+ get('/', {:context => "invalid"})
17
+ last_response.status.should == 200
18
+ JSON.parse(last_response.body).should == {}
19
+ end
20
+
21
+ it "should schedule context to 1 week" do
22
+ put('/', {
23
+ :context => "invalid",
24
+ :schedule => 1.week,
25
+ :at => '15:00',
26
+ :recurrency => 5
27
+ })
28
+ last_response.status.should == 200
29
+ end
30
+
31
+ end
@@ -0,0 +1,18 @@
1
+ # encoding: utf-8
2
+ $: << File.expand_path('lib')
3
+
4
+ ENV['RACK_ENV'] = 'test'
5
+
6
+ #
7
+ # Code coverage
8
+ #
9
+ require 'simplecov'
10
+ SimpleCov.start
11
+
12
+ require 'bundler/setup'
13
+ require 'active_support/all'
14
+ require 'rack/test'
15
+ require 'delorean'
16
+ require 'rspec'
17
+
18
+ require 'khronos'
metadata ADDED
@@ -0,0 +1,194 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: khronos
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Endel Dreyer
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-09-04 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: sinatra
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 1.3.3
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 1.3.3
30
+ - !ruby/object:Gem::Dependency
31
+ name: mongoid
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 3.0.5
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 3.0.5
46
+ - !ruby/object:Gem::Dependency
47
+ name: activerecord
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 3.2.8
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 3.2.8
62
+ - !ruby/object:Gem::Dependency
63
+ name: json
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 1.7.5
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 1.7.5
78
+ - !ruby/object:Gem::Dependency
79
+ name: activesupport
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 3.2.8
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 3.2.8
94
+ description: Advanced Cron replacement for the cloud.
95
+ email:
96
+ - endel@ocapi.com.br
97
+ executables: []
98
+ extensions: []
99
+ extra_rdoc_files: []
100
+ files:
101
+ - .rspec
102
+ - Gemfile
103
+ - bin/khronos
104
+ - config.ru
105
+ - config/.config.yml.un~
106
+ - config/.environment.yml.un~
107
+ - config/.redis.yml.un~
108
+ - config/.storage.yml.un~
109
+ - config/environment.yml
110
+ - khronos.gemspec
111
+ - lib/.khronos.rb.un~
112
+ - lib/.scheduler.rb.swp
113
+ - lib/.scheduler.rb.un~
114
+ - lib/khronos.rb
115
+ - lib/khronos/.config.rb.un~
116
+ - lib/khronos/.controller.rb.un~
117
+ - lib/khronos/.runner.rb.un~
118
+ - lib/khronos/.schedule.rb.un~
119
+ - lib/khronos/.scheduler.rb.un~
120
+ - lib/khronos/.server.rb.un~
121
+ - lib/khronos/.storage.rb.un~
122
+ - lib/khronos/.task.rb.un~
123
+ - lib/khronos/.version.rb.swp
124
+ - lib/khronos/.version.rb.un~
125
+ - lib/khronos/config.rb
126
+ - lib/khronos/controller.rb
127
+ - lib/khronos/runner.rb
128
+ - lib/khronos/scheduler.rb
129
+ - lib/khronos/server.rb
130
+ - lib/khronos/storage.rb
131
+ - lib/khronos/storage/adapter.rb
132
+ - lib/khronos/storage/adapter/.client.rb.un~
133
+ - lib/khronos/storage/adapter/.memcached.rb.swp
134
+ - lib/khronos/storage/adapter/.memcached.rb.un~
135
+ - lib/khronos/storage/adapter/.mongo.rb.un~
136
+ - lib/khronos/storage/adapter/.mongodb.rb.swp
137
+ - lib/khronos/storage/adapter/.mongodb.rb.un~
138
+ - lib/khronos/storage/adapter/.postgres.rb.un~
139
+ - lib/khronos/storage/adapter/.redis.rb.swp
140
+ - lib/khronos/storage/adapter/.redis.rb.un~
141
+ - lib/khronos/storage/adapter/mongo.rb
142
+ - lib/khronos/storage/adapter/mongo/.mongo.rb.un~
143
+ - lib/khronos/storage/adapter/mongo/.schedule.rb.un~
144
+ - lib/khronos/storage/adapter/mongo/.schedule_log.rb.un~
145
+ - lib/khronos/storage/adapter/mongo/schedule.rb
146
+ - lib/khronos/storage/adapter/mongo/schedule_log.rb
147
+ - lib/khronos/storage/adapter/postgres.rb
148
+ - lib/khronos/storage/adapter/postgres/.schedule.rb.un~
149
+ - lib/khronos/storage/adapter/postgres/.schedule_log.rb.un~
150
+ - lib/khronos/storage/adapter/postgres/schedule.rb
151
+ - lib/khronos/storage/adapter/postgres/schedule_log.rb
152
+ - lib/khronos/storage/db/migrate/.schedule.rb.un~
153
+ - lib/khronos/storage/db/migrate/.schedule_log.rb.un~
154
+ - lib/khronos/storage/db/migrate/schedule.rb
155
+ - lib/khronos/storage/db/migrate/schedule_log.rb
156
+ - lib/khronos/version.rb
157
+ - spec/.spec_helper.rb.un~
158
+ - spec/functional/.client_spec.rb.un~
159
+ - spec/functional/client_spec.rb
160
+ - spec/integration/.server_spec.rb.un~
161
+ - spec/integration/server_spec.rb
162
+ - spec/spec_helper.rb
163
+ homepage: http://github.com/ocapi/scraper
164
+ licenses:
165
+ - MIT
166
+ post_install_message:
167
+ rdoc_options: []
168
+ require_paths:
169
+ - lib
170
+ required_ruby_version: !ruby/object:Gem::Requirement
171
+ none: false
172
+ requirements:
173
+ - - ! '>='
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ required_rubygems_version: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ requirements: []
183
+ rubyforge_project:
184
+ rubygems_version: 1.8.24
185
+ signing_key:
186
+ specification_version: 3
187
+ summary: Ruby HTTP Job Scheduler Interface.
188
+ test_files:
189
+ - spec/functional/.client_spec.rb.un~
190
+ - spec/functional/client_spec.rb
191
+ - spec/integration/.server_spec.rb.un~
192
+ - spec/integration/server_spec.rb
193
+ - spec/spec_helper.rb
194
+ has_rdoc: