asyncapi-server 1.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 (75) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +9 -0
  3. data/README.md +83 -0
  4. data/Rakefile +33 -0
  5. data/app/controllers/asyncapi/server/v1/jobs_controller.rb +34 -0
  6. data/app/models/asyncapi/server/job.rb +14 -0
  7. data/app/serializers/asyncapi/server/job_serializer.rb +10 -0
  8. data/app/workers/asyncapi/server/job_worker.rb +41 -0
  9. data/config/database.yml +25 -0
  10. data/config/routes.rb +7 -0
  11. data/db/migrate/20141112034324_create_asyncapi_server_jobs.rb +10 -0
  12. data/db/migrate/20141212064931_add_secret_to_asyncapi_server_job.rb +5 -0
  13. data/db/migrate/20150130062520_add_expired_at_to_asyncapi_server_job.rb +11 -0
  14. data/db/migrate/20150201231018_drop_expired_at_from_asyncapi_server_jobs.rb +9 -0
  15. data/lib/asyncapi-server.rb +1 -0
  16. data/lib/asyncapi/server.rb +16 -0
  17. data/lib/asyncapi/server/engine.rb +23 -0
  18. data/lib/asyncapi/server/rails_ext/controller.rb +32 -0
  19. data/lib/asyncapi/server/rspec.rb +19 -0
  20. data/lib/asyncapi/server/version.rb +5 -0
  21. data/lib/asyncapi_server/engine.rb +1 -0
  22. data/lib/generators/asyncapi/server/config_generator.rb +17 -0
  23. data/lib/tasks/asyncapi_server_tasks.rake +4 -0
  24. data/spec/controllers/asyncapi/server/v1/jobs_controller_spec.rb +51 -0
  25. data/spec/dummy/README.rdoc +28 -0
  26. data/spec/dummy/Rakefile +6 -0
  27. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  28. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  29. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  30. data/spec/dummy/app/controllers/tests_controller.rb +5 -0
  31. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  32. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  33. data/spec/dummy/bin/bundle +3 -0
  34. data/spec/dummy/bin/rails +4 -0
  35. data/spec/dummy/bin/rake +4 -0
  36. data/spec/dummy/config.ru +4 -0
  37. data/spec/dummy/config/application.rb +29 -0
  38. data/spec/dummy/config/boot.rb +5 -0
  39. data/spec/dummy/config/database.yml +25 -0
  40. data/spec/dummy/config/environment.rb +5 -0
  41. data/spec/dummy/config/environments/development.rb +37 -0
  42. data/spec/dummy/config/environments/production.rb +78 -0
  43. data/spec/dummy/config/environments/test.rb +39 -0
  44. data/spec/dummy/config/initializers/assets.rb +8 -0
  45. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  46. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  47. data/spec/dummy/config/initializers/default_url_options.rb +2 -0
  48. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  49. data/spec/dummy/config/initializers/inflections.rb +16 -0
  50. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  51. data/spec/dummy/config/initializers/session_store.rb +3 -0
  52. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  53. data/spec/dummy/config/locales/en.yml +23 -0
  54. data/spec/dummy/config/routes.rb +59 -0
  55. data/spec/dummy/config/secrets.yml +22 -0
  56. data/spec/dummy/db/migrate/20141212065005_create_asyncapi_server_jobs.asyncapi_server.rb +11 -0
  57. data/spec/dummy/db/migrate/20141212065006_add_secret_to_asyncapi_server_job.asyncapi_server.rb +6 -0
  58. data/spec/dummy/db/migrate/20150130062901_add_expired_at_to_asyncapi_server_job.asyncapi_server.rb +12 -0
  59. data/spec/dummy/db/migrate/20150201231329_drop_expired_at_from_asyncapi_server_jobs.asyncapi_server.rb +10 -0
  60. data/spec/dummy/db/schema.rb +24 -0
  61. data/spec/dummy/public/404.html +67 -0
  62. data/spec/dummy/public/422.html +67 -0
  63. data/spec/dummy/public/500.html +66 -0
  64. data/spec/dummy/public/favicon.ico +0 -0
  65. data/spec/factories/job.rb +7 -0
  66. data/spec/fixtures/runner.rb +6 -0
  67. data/spec/models/job_spec.rb +44 -0
  68. data/spec/requests/enqueueing_jobs_spec.rb +33 -0
  69. data/spec/serializers/job_serializer_spec.rb +18 -0
  70. data/spec/server_spec.rb +22 -0
  71. data/spec/spec_helper.rb +40 -0
  72. data/spec/support/factory_girl.rb +3 -0
  73. data/spec/support/indifferent_hash.rb +8 -0
  74. data/spec/workers/job_worker_spec.rb +80 -0
  75. metadata +354 -0
@@ -0,0 +1,6 @@
1
+ class Runner
2
+
3
+ def self.call(params)
4
+ end
5
+
6
+ end
@@ -0,0 +1,44 @@
1
+ require "spec_helper"
2
+
3
+ module Asyncapi
4
+ module Server
5
+ describe Job do
6
+ it "has a table name of `asyncapi_server_jobs`" do
7
+ expect(described_class.table_name).to eq "asyncapi_server_jobs"
8
+ end
9
+
10
+ describe "initialization" do
11
+ subject do
12
+ described_class.new(
13
+ status: :queued,
14
+ callback_url: 'http://callback_url.com',
15
+ class_name: 'CreateStorageFacility',
16
+ params: {param: 'values'}.to_json,
17
+ )
18
+ end
19
+
20
+ its(:status) { is_expected.to eq "queued" }
21
+ its(:callback_url) { is_expected.to eq "http://callback_url.com" }
22
+ its(:class_name) { is_expected.to eq "CreateStorageFacility" }
23
+ its(:params) { is_expected.to eq({param: "values"}.to_json) }
24
+
25
+ context "status" do
26
+ it "can also be assigned other values" do
27
+ subject.status = :success
28
+ subject.status = :error
29
+ expect(subject.save).to eq(true)
30
+ end
31
+ end
32
+ end
33
+
34
+ describe "#url" do
35
+ let(:job) { build_stubbed(:asyncapi_server_job) }
36
+ it "is a url to the job" do
37
+ expected_url = "http://test.com/asyncapi/server/v1/jobs/#{job.id}"
38
+ expect(job.url).to eq expected_url
39
+ end
40
+ end
41
+
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,33 @@
1
+ require "spec_helper"
2
+
3
+ describe "Enqueueing jobs", type: :request do
4
+
5
+ let(:job) { build_stubbed(:asyncapi_server_job, secret: "secret") }
6
+
7
+ before do
8
+ allow(Asyncapi::Server::Job).to receive(:create).with(
9
+ class_name: "Runner",
10
+ callback_url: "callback_url",
11
+ params: {client: "params"}.to_json,
12
+ secret: "secret",
13
+ ).and_return(job)
14
+
15
+ allow(job).to receive(:url).and_return("server_job_url")
16
+ end
17
+
18
+ it "allows asynchronous handing of http requests and cleans up old jobs" do
19
+ expect(Asyncapi::Server::JobWorker).to receive(:perform_async).with(job.id)
20
+
21
+ post("tests", job: {
22
+ callback_url: "callback_url",
23
+ params: {client: "params"}.to_json,
24
+ secret: "secret",
25
+ })
26
+
27
+ expect(response).to be_successful
28
+ parsed_response = indifferent_hash(response.body)[:job]
29
+ expect(parsed_response[:url]).to eq "server_job_url"
30
+ expect(parsed_response[:secret]).to eq "secret"
31
+ end
32
+
33
+ end
@@ -0,0 +1,18 @@
1
+ require "spec_helper"
2
+
3
+ module Asyncapi::Server
4
+ describe JobSerializer do
5
+
6
+ let(:job) { build_stubbed(:asyncapi_server_job) }
7
+ let(:serializer) { described_class.new(job) }
8
+ subject(:serialized_hash) { serializer.attributes }
9
+
10
+ its([:id]) { is_expected.to eq job.id }
11
+
12
+ it "has a url" do
13
+ allow(job).to receive(:url).and_return("url")
14
+ expect(serialized_hash[:url]).to eq "url"
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,22 @@
1
+ require 'spec_helper'
2
+
3
+ module Asyncapi
4
+ describe Server do
5
+
6
+ describe ".expiry_threshold=" do
7
+ let!(:original_expiry_threshold) { described_class.expiry_threshold }
8
+ after { described_class.expiry_threshold = original_expiry_threshold }
9
+ it "sets the threshold for expiring old jobs" do
10
+ described_class.expiry_threshold = 2.days
11
+ expect(described_class.expiry_threshold).to eq 2.days
12
+ end
13
+ end
14
+
15
+ describe ".expiry_threshold" do
16
+ it "defaults to 10 days" do
17
+ expect(described_class.expiry_threshold).to eq 10.days
18
+ end
19
+ end
20
+
21
+ end
22
+ end
@@ -0,0 +1,40 @@
1
+ ENV['RAILS_ENV'] ||= 'test'
2
+ SPEC_DIR = File.dirname(__FILE__)
3
+ DUMMY_DIR = File.join(SPEC_DIR, "dummy")
4
+
5
+ require File.join(DUMMY_DIR, "config", "environment")
6
+ require "rspec/rails"
7
+ require "rspec/its"
8
+ require "factory_girl_rails"
9
+ require "pry"
10
+ require "database_cleaner"
11
+ require "timecop"
12
+
13
+ Rails.backtrace_cleaner.remove_silencers!
14
+
15
+ # Load other files in spec directory
16
+
17
+ Dir[
18
+ File.join(SPEC_DIR, "support", "*.rb"),
19
+ File.join(SPEC_DIR, "fixtures", "*.rb"),
20
+ ].each { |f| require f }
21
+
22
+ RSpec.configure do |config|
23
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
24
+ config.use_transactional_fixtures = false
25
+ config.infer_base_class_for_anonymous_controllers = false
26
+ config.order = "random"
27
+
28
+ config.before(:suite) do
29
+ DatabaseCleaner.clean_with :truncation
30
+ end
31
+
32
+ config.before do
33
+ DatabaseCleaner.strategy = :transaction
34
+ DatabaseCleaner.start
35
+ end
36
+
37
+ config.after do
38
+ DatabaseCleaner.clean
39
+ end
40
+ end
@@ -0,0 +1,3 @@
1
+ RSpec.configure do |config|
2
+ config.include FactoryGirl::Syntax::Methods
3
+ end
@@ -0,0 +1,8 @@
1
+ def indifferent_hash(json)
2
+ parsed_json = JSON.parse(json)
3
+ if parsed_json.respond_to?(:with_indifferent_access)
4
+ parsed_json.with_indifferent_access
5
+ elsif parsed_json.respond_to?(:map)
6
+ parsed_json.map(&:with_indifferent_access)
7
+ end
8
+ end
@@ -0,0 +1,80 @@
1
+ require "spec_helper"
2
+
3
+ module Asyncapi
4
+ module Server
5
+ describe JobWorker do
6
+
7
+ it "does not retry" do
8
+ expect(described_class.sidekiq_options_hash['retry']).to be false
9
+ end
10
+
11
+ describe "#perform" do
12
+ it "sends :call to the job's runner class and reports with successful status" do
13
+ job = create(:asyncapi_server_job, {
14
+ class_name: "Runner",
15
+ params: {some: "params"}.to_json,
16
+ callback_url: "client_job_url",
17
+ secret: "sekret",
18
+ })
19
+
20
+ expect(Runner).to receive(:call).
21
+ with(job.params) { "message" }
22
+ expect(Typhoeus).to receive(:put).with(
23
+ "client_job_url",
24
+ body: {
25
+ job: {
26
+ status: :success,
27
+ message: "message",
28
+ secret: "sekret",
29
+ }
30
+ }.to_json,
31
+ headers: {
32
+ "Content-Type" => "application/json",
33
+ Accept: "application/json"
34
+ }
35
+ )
36
+
37
+ described_class.new.perform(job.id)
38
+ job.reload
39
+ expect(job.status).to eq "success"
40
+ end
41
+
42
+ context "an error occurred" do
43
+ it "reports the error to the callback url" do
44
+ job = create(:asyncapi_server_job, {
45
+ class_name: "Runner",
46
+ callback_url: "client_job_url",
47
+ secret: "sekret",
48
+ })
49
+
50
+ error = ArgumentError.new("my error")
51
+ error.set_backtrace(["back", "trace"])
52
+
53
+ allow(Runner).to receive(:call).
54
+ and_raise(error)
55
+
56
+ expect(Typhoeus).to receive(:put).with(
57
+ "client_job_url",
58
+ body: {
59
+ job: {
60
+ status: :error,
61
+ message: ["my error", "back", "trace"].join("\n"),
62
+ secret: "sekret",
63
+ }
64
+ }.to_json,
65
+ headers: {
66
+ "Content-Type" => "application/json",
67
+ Accept: "application/json"
68
+ }
69
+ )
70
+
71
+ described_class.new.perform(job.id)
72
+ job.reload
73
+ expect(job.status).to eq "error"
74
+ end
75
+ end
76
+ end
77
+
78
+ end
79
+ end
80
+ end
metadata ADDED
@@ -0,0 +1,354 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: asyncapi-server
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - G5
8
+ - Marc Ignacio
9
+ - Ramon Tayag
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2015-04-17 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: kaminari
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
29
+ - !ruby/object:Gem::Dependency
30
+ name: api-pagination
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: rails
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '0'
50
+ type: :runtime
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ - !ruby/object:Gem::Dependency
58
+ name: active_model_serializers
59
+ requirement: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: '0'
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ - !ruby/object:Gem::Dependency
72
+ name: typhoeus
73
+ requirement: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ - !ruby/object:Gem::Dependency
86
+ name: sidekiq
87
+ requirement: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
92
+ type: :runtime
93
+ prerelease: false
94
+ version_requirements: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
99
+ - !ruby/object:Gem::Dependency
100
+ name: sqlite3
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: 1.3.10
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - "~>"
111
+ - !ruby/object:Gem::Version
112
+ version: 1.3.10
113
+ - !ruby/object:Gem::Dependency
114
+ name: rspec-rails
115
+ requirement: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - "~>"
118
+ - !ruby/object:Gem::Version
119
+ version: 3.1.0
120
+ type: :development
121
+ prerelease: false
122
+ version_requirements: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - "~>"
125
+ - !ruby/object:Gem::Version
126
+ version: 3.1.0
127
+ - !ruby/object:Gem::Dependency
128
+ name: rspec-its
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: 1.1.0
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - "~>"
139
+ - !ruby/object:Gem::Version
140
+ version: 1.1.0
141
+ - !ruby/object:Gem::Dependency
142
+ name: pry
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - "~>"
146
+ - !ruby/object:Gem::Version
147
+ version: 0.10.1
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - "~>"
153
+ - !ruby/object:Gem::Version
154
+ version: 0.10.1
155
+ - !ruby/object:Gem::Dependency
156
+ name: factory_girl_rails
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - "~>"
160
+ - !ruby/object:Gem::Version
161
+ version: 4.4.0
162
+ type: :development
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - "~>"
167
+ - !ruby/object:Gem::Version
168
+ version: 4.4.0
169
+ - !ruby/object:Gem::Dependency
170
+ name: database_cleaner
171
+ requirement: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - "~>"
174
+ - !ruby/object:Gem::Version
175
+ version: 1.3.0
176
+ type: :development
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - "~>"
181
+ - !ruby/object:Gem::Version
182
+ version: 1.3.0
183
+ - !ruby/object:Gem::Dependency
184
+ name: timecop
185
+ requirement: !ruby/object:Gem::Requirement
186
+ requirements:
187
+ - - ">="
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ type: :development
191
+ prerelease: false
192
+ version_requirements: !ruby/object:Gem::Requirement
193
+ requirements:
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: '0'
197
+ description: Asynchronous API communication - Server
198
+ email:
199
+ - lateam@getg5.com
200
+ - marcrendlignacio@gmail.com
201
+ - ramon.tayag@gmail.com
202
+ executables: []
203
+ extensions: []
204
+ extra_rdoc_files: []
205
+ files:
206
+ - MIT-LICENSE
207
+ - README.md
208
+ - Rakefile
209
+ - app/controllers/asyncapi/server/v1/jobs_controller.rb
210
+ - app/models/asyncapi/server/job.rb
211
+ - app/serializers/asyncapi/server/job_serializer.rb
212
+ - app/workers/asyncapi/server/job_worker.rb
213
+ - config/database.yml
214
+ - config/routes.rb
215
+ - db/migrate/20141112034324_create_asyncapi_server_jobs.rb
216
+ - db/migrate/20141212064931_add_secret_to_asyncapi_server_job.rb
217
+ - db/migrate/20150130062520_add_expired_at_to_asyncapi_server_job.rb
218
+ - db/migrate/20150201231018_drop_expired_at_from_asyncapi_server_jobs.rb
219
+ - lib/asyncapi-server.rb
220
+ - lib/asyncapi/server.rb
221
+ - lib/asyncapi/server/engine.rb
222
+ - lib/asyncapi/server/rails_ext/controller.rb
223
+ - lib/asyncapi/server/rspec.rb
224
+ - lib/asyncapi/server/version.rb
225
+ - lib/asyncapi_server/engine.rb
226
+ - lib/generators/asyncapi/server/config_generator.rb
227
+ - lib/tasks/asyncapi_server_tasks.rake
228
+ - spec/controllers/asyncapi/server/v1/jobs_controller_spec.rb
229
+ - spec/dummy/README.rdoc
230
+ - spec/dummy/Rakefile
231
+ - spec/dummy/app/assets/javascripts/application.js
232
+ - spec/dummy/app/assets/stylesheets/application.css
233
+ - spec/dummy/app/controllers/application_controller.rb
234
+ - spec/dummy/app/controllers/tests_controller.rb
235
+ - spec/dummy/app/helpers/application_helper.rb
236
+ - spec/dummy/app/views/layouts/application.html.erb
237
+ - spec/dummy/bin/bundle
238
+ - spec/dummy/bin/rails
239
+ - spec/dummy/bin/rake
240
+ - spec/dummy/config.ru
241
+ - spec/dummy/config/application.rb
242
+ - spec/dummy/config/boot.rb
243
+ - spec/dummy/config/database.yml
244
+ - spec/dummy/config/environment.rb
245
+ - spec/dummy/config/environments/development.rb
246
+ - spec/dummy/config/environments/production.rb
247
+ - spec/dummy/config/environments/test.rb
248
+ - spec/dummy/config/initializers/assets.rb
249
+ - spec/dummy/config/initializers/backtrace_silencers.rb
250
+ - spec/dummy/config/initializers/cookies_serializer.rb
251
+ - spec/dummy/config/initializers/default_url_options.rb
252
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
253
+ - spec/dummy/config/initializers/inflections.rb
254
+ - spec/dummy/config/initializers/mime_types.rb
255
+ - spec/dummy/config/initializers/session_store.rb
256
+ - spec/dummy/config/initializers/wrap_parameters.rb
257
+ - spec/dummy/config/locales/en.yml
258
+ - spec/dummy/config/routes.rb
259
+ - spec/dummy/config/secrets.yml
260
+ - spec/dummy/db/migrate/20141212065005_create_asyncapi_server_jobs.asyncapi_server.rb
261
+ - spec/dummy/db/migrate/20141212065006_add_secret_to_asyncapi_server_job.asyncapi_server.rb
262
+ - spec/dummy/db/migrate/20150130062901_add_expired_at_to_asyncapi_server_job.asyncapi_server.rb
263
+ - spec/dummy/db/migrate/20150201231329_drop_expired_at_from_asyncapi_server_jobs.asyncapi_server.rb
264
+ - spec/dummy/db/schema.rb
265
+ - spec/dummy/public/404.html
266
+ - spec/dummy/public/422.html
267
+ - spec/dummy/public/500.html
268
+ - spec/dummy/public/favicon.ico
269
+ - spec/factories/job.rb
270
+ - spec/fixtures/runner.rb
271
+ - spec/models/job_spec.rb
272
+ - spec/requests/enqueueing_jobs_spec.rb
273
+ - spec/serializers/job_serializer_spec.rb
274
+ - spec/server_spec.rb
275
+ - spec/spec_helper.rb
276
+ - spec/support/factory_girl.rb
277
+ - spec/support/indifferent_hash.rb
278
+ - spec/workers/job_worker_spec.rb
279
+ homepage: https://github.com/G5/asyncapi-server
280
+ licenses:
281
+ - MIT
282
+ metadata: {}
283
+ post_install_message:
284
+ rdoc_options: []
285
+ require_paths:
286
+ - lib
287
+ required_ruby_version: !ruby/object:Gem::Requirement
288
+ requirements:
289
+ - - ">="
290
+ - !ruby/object:Gem::Version
291
+ version: '0'
292
+ required_rubygems_version: !ruby/object:Gem::Requirement
293
+ requirements:
294
+ - - ">="
295
+ - !ruby/object:Gem::Version
296
+ version: '0'
297
+ requirements: []
298
+ rubyforge_project:
299
+ rubygems_version: 2.4.5
300
+ signing_key:
301
+ specification_version: 4
302
+ summary: Asynchronous API communication - Server
303
+ test_files:
304
+ - spec/controllers/asyncapi/server/v1/jobs_controller_spec.rb
305
+ - spec/dummy/app/assets/javascripts/application.js
306
+ - spec/dummy/app/assets/stylesheets/application.css
307
+ - spec/dummy/app/controllers/application_controller.rb
308
+ - spec/dummy/app/controllers/tests_controller.rb
309
+ - spec/dummy/app/helpers/application_helper.rb
310
+ - spec/dummy/app/views/layouts/application.html.erb
311
+ - spec/dummy/bin/bundle
312
+ - spec/dummy/bin/rails
313
+ - spec/dummy/bin/rake
314
+ - spec/dummy/config/application.rb
315
+ - spec/dummy/config/boot.rb
316
+ - spec/dummy/config/database.yml
317
+ - spec/dummy/config/environment.rb
318
+ - spec/dummy/config/environments/development.rb
319
+ - spec/dummy/config/environments/production.rb
320
+ - spec/dummy/config/environments/test.rb
321
+ - spec/dummy/config/initializers/assets.rb
322
+ - spec/dummy/config/initializers/backtrace_silencers.rb
323
+ - spec/dummy/config/initializers/cookies_serializer.rb
324
+ - spec/dummy/config/initializers/default_url_options.rb
325
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
326
+ - spec/dummy/config/initializers/inflections.rb
327
+ - spec/dummy/config/initializers/mime_types.rb
328
+ - spec/dummy/config/initializers/session_store.rb
329
+ - spec/dummy/config/initializers/wrap_parameters.rb
330
+ - spec/dummy/config/locales/en.yml
331
+ - spec/dummy/config/routes.rb
332
+ - spec/dummy/config/secrets.yml
333
+ - spec/dummy/config.ru
334
+ - spec/dummy/db/migrate/20141212065005_create_asyncapi_server_jobs.asyncapi_server.rb
335
+ - spec/dummy/db/migrate/20141212065006_add_secret_to_asyncapi_server_job.asyncapi_server.rb
336
+ - spec/dummy/db/migrate/20150130062901_add_expired_at_to_asyncapi_server_job.asyncapi_server.rb
337
+ - spec/dummy/db/migrate/20150201231329_drop_expired_at_from_asyncapi_server_jobs.asyncapi_server.rb
338
+ - spec/dummy/db/schema.rb
339
+ - spec/dummy/public/404.html
340
+ - spec/dummy/public/422.html
341
+ - spec/dummy/public/500.html
342
+ - spec/dummy/public/favicon.ico
343
+ - spec/dummy/Rakefile
344
+ - spec/dummy/README.rdoc
345
+ - spec/factories/job.rb
346
+ - spec/fixtures/runner.rb
347
+ - spec/models/job_spec.rb
348
+ - spec/requests/enqueueing_jobs_spec.rb
349
+ - spec/serializers/job_serializer_spec.rb
350
+ - spec/server_spec.rb
351
+ - spec/spec_helper.rb
352
+ - spec/support/factory_girl.rb
353
+ - spec/support/indifferent_hash.rb
354
+ - spec/workers/job_worker_spec.rb