axel 0.0.1

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 (128) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +21 -0
  3. data/.octopolo.yml +2 -0
  4. data/.rspec +2 -0
  5. data/.ruby-gemset +1 -0
  6. data/.ruby-version +1 -0
  7. data/.travis.yml +23 -0
  8. data/Gemfile +4 -0
  9. data/LICENSE.txt +22 -0
  10. data/README.md +271 -0
  11. data/Rakefile +13 -0
  12. data/app/models/axel/api_proxy.rb +86 -0
  13. data/app/models/axel/associations/base.rb +64 -0
  14. data/app/models/axel/associations/belongs_to.rb +43 -0
  15. data/app/models/axel/associations/has_many.rb +29 -0
  16. data/app/models/axel/associations/has_one.rb +30 -0
  17. data/app/models/axel/payload.rb +4 -0
  18. data/app/models/axel/payload/base.rb +107 -0
  19. data/app/models/axel/payload/errors.rb +62 -0
  20. data/app/models/axel/payload/metadata.rb +57 -0
  21. data/app/models/axel/querier.rb +166 -0
  22. data/app/models/axel/router.rb +119 -0
  23. data/app/models/axel/service_resource.rb +4 -0
  24. data/app/models/axel/service_resource/associations.rb +80 -0
  25. data/app/models/axel/service_resource/attributes.rb +23 -0
  26. data/app/models/axel/service_resource/automatic_resource.rb +23 -0
  27. data/app/models/axel/service_resource/base.rb +47 -0
  28. data/app/models/axel/service_resource/builder.rb +40 -0
  29. data/app/models/axel/service_resource/inspects.rb +17 -0
  30. data/app/models/axel/service_resource/payload_parser.rb +46 -0
  31. data/app/models/axel/service_resource/queries.rb +25 -0
  32. data/app/models/axel/service_resource/requesters.rb +49 -0
  33. data/app/models/axel/service_resource/routes.rb +19 -0
  34. data/app/models/axel/service_resource/typhoid_extensions.rb +134 -0
  35. data/app/views/axel/base/empty.json.erb +0 -0
  36. data/app/views/axel/base/empty.xml.builder +0 -0
  37. data/app/views/layouts/axel.json.jbuilder +7 -0
  38. data/app/views/layouts/axel.xml.builder +12 -0
  39. data/axel.gemspec +42 -0
  40. data/lib/axel.rb +56 -0
  41. data/lib/axel/application_extensions.rb +13 -0
  42. data/lib/axel/application_helper.rb +27 -0
  43. data/lib/axel/base_controller.rb +6 -0
  44. data/lib/axel/cascadable_attribute.rb +33 -0
  45. data/lib/axel/configurations/resource.rb +29 -0
  46. data/lib/axel/configurations/service.rb +28 -0
  47. data/lib/axel/configurator.rb +54 -0
  48. data/lib/axel/configurators/services.rb +29 -0
  49. data/lib/axel/controller_base.rb +27 -0
  50. data/lib/axel/controller_helpers.rb +209 -0
  51. data/lib/axel/controller_parameters.rb +32 -0
  52. data/lib/axel/engine.rb +14 -0
  53. data/lib/axel/inspector.rb +91 -0
  54. data/lib/axel/payload/remote_error.rb +14 -0
  55. data/lib/axel/request_options.rb +26 -0
  56. data/lib/axel/uri.rb +47 -0
  57. data/lib/axel/version.rb +3 -0
  58. data/lib/generators/axel/install_generator.rb +16 -0
  59. data/lib/generators/templates/README.md +22 -0
  60. data/lib/generators/templates/axel.rb +81 -0
  61. data/script/rails +5 -0
  62. data/spec/controllers/pages_controller_spec.rb +217 -0
  63. data/spec/dummy/README.rdoc +261 -0
  64. data/spec/dummy/Rakefile +7 -0
  65. data/spec/dummy/app/assets/javascripts/application.js +15 -0
  66. data/spec/dummy/app/assets/stylesheets/application.css +13 -0
  67. data/spec/dummy/app/controllers/application_controller.rb +3 -0
  68. data/spec/dummy/app/controllers/pages_controller.rb +6 -0
  69. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  70. data/spec/dummy/app/mailers/.gitkeep +0 -0
  71. data/spec/dummy/app/models/.gitkeep +0 -0
  72. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  73. data/spec/dummy/config.ru +4 -0
  74. data/spec/dummy/config/application.rb +62 -0
  75. data/spec/dummy/config/boot.rb +10 -0
  76. data/spec/dummy/config/database.yml +25 -0
  77. data/spec/dummy/config/environment.rb +5 -0
  78. data/spec/dummy/config/environments/development.rb +37 -0
  79. data/spec/dummy/config/environments/production.rb +67 -0
  80. data/spec/dummy/config/environments/test.rb +37 -0
  81. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  82. data/spec/dummy/config/initializers/inflections.rb +15 -0
  83. data/spec/dummy/config/initializers/mime_types.rb +5 -0
  84. data/spec/dummy/config/initializers/secret_token.rb +7 -0
  85. data/spec/dummy/config/initializers/session_store.rb +8 -0
  86. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  87. data/spec/dummy/config/locales/en.yml +5 -0
  88. data/spec/dummy/config/routes.rb +3 -0
  89. data/spec/dummy/db/development.sqlite3 +0 -0
  90. data/spec/dummy/db/test.sqlite3 +0 -0
  91. data/spec/dummy/lib/assets/.gitkeep +0 -0
  92. data/spec/dummy/log/.gitignore +1 -0
  93. data/spec/dummy/log/.gitkeep +0 -0
  94. data/spec/dummy/public/404.html +26 -0
  95. data/spec/dummy/public/422.html +26 -0
  96. data/spec/dummy/public/500.html +25 -0
  97. data/spec/dummy/public/favicon.ico +0 -0
  98. data/spec/dummy/script/rails +6 -0
  99. data/spec/envelope_integration_check.rb +96 -0
  100. data/spec/helpers/axel/application_helper_spec.rb +31 -0
  101. data/spec/lib/axel/associations/base_spec.rb +28 -0
  102. data/spec/lib/axel/associations/belongs_to_spec.rb +62 -0
  103. data/spec/lib/axel/associations/has_many_spec.rb +23 -0
  104. data/spec/lib/axel/associations/has_one_spec.rb +23 -0
  105. data/spec/lib/axel/configurations/resource_spec.rb +15 -0
  106. data/spec/lib/axel/configurations/service_spec.rb +31 -0
  107. data/spec/lib/axel/configurator_spec.rb +26 -0
  108. data/spec/lib/axel/configurators/services_spec.rb +37 -0
  109. data/spec/lib/axel/controller_base_spec.rb +16 -0
  110. data/spec/lib/axel/controller_parameters_spec.rb +31 -0
  111. data/spec/lib/axel/inspector_spec.rb +45 -0
  112. data/spec/lib/axel/request_options_spec.rb +50 -0
  113. data/spec/lib/axel/uri_spec.rb +42 -0
  114. data/spec/lib/axel_spec.rb +64 -0
  115. data/spec/models/axel/api_proxy_spec.rb +66 -0
  116. data/spec/models/axel/payload/errors_spec.rb +165 -0
  117. data/spec/models/axel/payload/metadata_spec.rb +141 -0
  118. data/spec/models/axel/querier_spec.rb +158 -0
  119. data/spec/models/axel/router_spec.rb +115 -0
  120. data/spec/models/axel/service_resource/base_spec.rb +244 -0
  121. data/spec/models/axel/service_resource/builder_spec.rb +64 -0
  122. data/spec/models/axel/service_resource/payload_parser_spec.rb +60 -0
  123. data/spec/spec_helper.rb +39 -0
  124. data/spec/support/address.rb +5 -0
  125. data/spec/support/persona.rb +15 -0
  126. data/spec/support/user.rb +6 -0
  127. data/spec/views/axel/base/empty_spec.rb +34 -0
  128. metadata +508 -0
@@ -0,0 +1,64 @@
1
+ require 'spec_helper'
2
+ Axel::SomeClass = Class.new Axel::ServiceResource::Base
3
+ module Axel
4
+ module ServiceResource
5
+ describe Builder do
6
+ let(:klass) { SomeClass }
7
+ let(:success) { true }
8
+ let(:code) { 200 }
9
+ let(:response_stub) { double "Response", body: body_stub_hash.to_json, code: code, success?: success }
10
+ let(:bare_body) { { id: "1", name: "jon" } }
11
+
12
+ subject { Builder.new klass, response_stub }
13
+
14
+ describe "singular non-evelope" do
15
+ let(:body_stub_hash) { bare_body }
16
+
17
+ its(:enveloped?) { should be_falsey }
18
+ its(:result) { should == bare_body.stringify_keys }
19
+ its(:errors) { should == nil }
20
+ its(:metadata) { should == nil }
21
+ its(:array?) { should be_falsey }
22
+ its(:build) { should be_a SomeClass }
23
+ end
24
+
25
+ describe "multi non-evelope" do
26
+ let(:body_stub_hash) { [bare_body] }
27
+
28
+ its(:enveloped?) { should be_falsey }
29
+ its(:result) { should == [bare_body.stringify_keys] }
30
+ its(:errors) { should == nil }
31
+ its(:metadata) { should == nil }
32
+ its(:array?) { should be_truthy }
33
+ its(:build) { should have(1).some_classes }
34
+ end
35
+
36
+ describe "envelope" do
37
+ let(:metadata) { { "current_user" => { "id" => 1, "user_name" => "jon" } } }
38
+ let(:errors) { nil }
39
+ let(:body_stub_hash) { { metadata: metadata, result: result } }
40
+ describe "singular" do
41
+ let(:result) { bare_body }
42
+
43
+ its(:enveloped?) { should be_truthy }
44
+ its(:result) { should == bare_body.stringify_keys }
45
+ its(:errors) { should == nil }
46
+ its(:metadata) { should == metadata }
47
+ its(:array?) { should be_falsey }
48
+ its(:build) { should be_a SomeClass }
49
+ end
50
+
51
+ describe "multi" do
52
+ let(:result) { [bare_body] }
53
+
54
+ its(:enveloped?) { should be_truthy }
55
+ its(:result) { should == [bare_body.stringify_keys] }
56
+ its(:errors) { should == nil }
57
+ its(:metadata) { should == metadata }
58
+ its(:array?) { should be_truthy }
59
+ its(:build) { should have(1).some_classes }
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,60 @@
1
+ require 'spec_helper'
2
+ module Axel
3
+ module ServiceResource
4
+ describe PayloadParser do
5
+ subject { PayloadParser.new payload }
6
+ let(:empty_wia) { {}.with_indifferent_access }
7
+ let(:payload) { nil }
8
+ let(:parsed) { subject.parsed }
9
+
10
+ it "has a valid parsed" do
11
+ parsed.first.should == empty_wia
12
+ parsed[1].should == empty_wia
13
+ parsed[2].should be_a Payload::Metadata
14
+ parsed.last.should be_a Payload::Errors
15
+ end
16
+
17
+ describe "not-enveloped" do
18
+ let(:result) { { name: "Jon" }.with_indifferent_access }
19
+ let(:payload) { result }
20
+
21
+ it "has a valid parsed" do
22
+ parsed.first.should == payload
23
+ parsed[1].should == result
24
+ parsed[2].should be_a Payload::Metadata
25
+ parsed.last.should be_a Payload::Errors
26
+ end
27
+ end
28
+
29
+ describe "enveloped" do
30
+ let(:metadata) { { current_user: { id: 1 } }.with_indifferent_access }
31
+ let(:result) { { name: "Jon" }.with_indifferent_access }
32
+ let(:errors) { { status: 200, messages: ["Success"] }.with_indifferent_access }
33
+ let(:payload) { { metadata: metadata, result: result, errors: errors }.with_indifferent_access }
34
+
35
+ it "has a valid parsed" do
36
+ parsed.first.should == payload
37
+ parsed[1].should == result
38
+ parsed[2].should be_a Payload::Metadata
39
+ parsed[2].attributes.should == metadata
40
+ parsed.last.should be_a Payload::Errors
41
+ parsed.last.attributes.should == errors
42
+ end
43
+
44
+ describe "array errors" do
45
+ let(:payload) { { metadata: metadata, result: result, errors: errors }.with_indifferent_access }
46
+ let(:errors) { ["Success"] }
47
+
48
+ it "has a valid parsed" do
49
+ parsed.first.should == payload
50
+ parsed[1].should == result
51
+ parsed[2].should be_a Payload::Metadata
52
+ parsed[2].attributes.should == metadata
53
+ parsed.last.should be_a Payload::Errors
54
+ parsed.last.attributes.should == { "messages" => errors, "status" => 200 }
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,39 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper"` to ensure that it is only
4
+ # loaded once.
5
+ #
6
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+ ENV["RAILS_ENV"] = "test"
8
+ dummy_app = File.expand_path("../dummy", __FILE__)
9
+ require 'simplecov'
10
+ SimpleCov.start do
11
+ add_filter '/spec/'
12
+ add_filter '/vendor/'
13
+ end
14
+
15
+ require File.join dummy_app, "/config/environment"
16
+ ENGINE_RAILS_ROOT=File.join(File.dirname(__FILE__), '../')
17
+
18
+ require 'rspec/rails'
19
+ require 'active_record'
20
+
21
+ Rails.backtrace_cleaner.remove_silencers!
22
+
23
+ RSpec.configure do |config|
24
+ config.treat_symbols_as_metadata_keys_with_true_values = true
25
+ config.run_all_when_everything_filtered = true
26
+ config.filter_run :focus
27
+
28
+ %w[axel sqlite3].each { |path| require path }
29
+
30
+ Dir.glob(File.expand_path('../support/**/*.rb', __FILE__)).each { |file| require file }
31
+
32
+ # Run specs in random order to surface order dependencies. If you find an
33
+ # order dependency and want to debug it, you can fix the order by providing
34
+ # the seed, which is printed after each run.
35
+ # --seed 1234
36
+ config.order = 'random'
37
+
38
+ config.infer_spec_type_from_file_location!
39
+ end
@@ -0,0 +1,5 @@
1
+ class Address < Axel::ServiceResource::Base
2
+ site "http://user-service.dev"
3
+
4
+ belongs_to :address
5
+ end
@@ -0,0 +1,15 @@
1
+ class Persona < Axel::ServiceResource::Base
2
+ site "http://user-service.dev"
3
+
4
+ belongs_to :user
5
+
6
+ field :user_id
7
+ end
8
+
9
+ class PersonaWithIncludedUser < Axel::ServiceResource::Base
10
+ site "http://user-service.dev"
11
+
12
+ belongs_to :user, included: true
13
+
14
+ field :user_id
15
+ end
@@ -0,0 +1,6 @@
1
+ class User < Axel::ServiceResource::Base
2
+ site "http://user-service.dev"
3
+
4
+ has_many :personas
5
+ has_one :address
6
+ end
@@ -0,0 +1,34 @@
1
+ require 'spec_helper'
2
+ require 'ap'
3
+ require 'pry-rails'
4
+
5
+ describe "axel/base/empty" do
6
+ def self.view_checks
7
+ it "renders the json envelope" do
8
+ render template: "axel/base/empty", layout: "layouts/axel", formats: formats
9
+ expect(rendered).to match /metadata/
10
+ expect(rendered).to match /result/
11
+ end
12
+ end
13
+
14
+ let(:formats) { [:json] }
15
+
16
+ before do
17
+ view.stub drop_meta?: false
18
+ view.stub :safe_json_load do |arg|
19
+ arg
20
+ end
21
+ view.stub errors: Axel::Payload::Errors.new {}
22
+ view.stub metadata: Axel::Payload::Metadata.new {}
23
+ view.stub :xml_clean do |arg|
24
+ arg
25
+ end
26
+ end
27
+
28
+ view_checks
29
+
30
+ context "rendering xml" do
31
+ let(:formats) { [:xml] }
32
+ view_checks
33
+ end
34
+ end
metadata ADDED
@@ -0,0 +1,508 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: axel
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jon Phenow
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-06-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rake
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 10.0.3
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 10.0.3
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec-rails
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '2.14'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '2.14'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec-its
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec-collection_matchers
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ! '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry-rails
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ! '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ! '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: awesome_print
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: 1.1.0
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: 1.1.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: sqlite3
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: 1.3.6
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 1.3.6
111
+ - !ruby/object:Gem::Dependency
112
+ name: simplecov
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 0.7.1
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ~>
123
+ - !ruby/object:Gem::Version
124
+ version: 0.7.1
125
+ - !ruby/object:Gem::Dependency
126
+ name: activerecord
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ! '>'
130
+ - !ruby/object:Gem::Version
131
+ version: '3.0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ! '>'
137
+ - !ruby/object:Gem::Version
138
+ version: '3.0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: gemfury
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ! '>='
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ! '>='
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: activesupport
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ! '>'
158
+ - !ruby/object:Gem::Version
159
+ version: '3.0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ! '>'
165
+ - !ruby/object:Gem::Version
166
+ version: '3.0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: actionpack
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ! '>'
172
+ - !ruby/object:Gem::Version
173
+ version: '3.0'
174
+ - - <
175
+ - !ruby/object:Gem::Version
176
+ version: '4.2'
177
+ type: :runtime
178
+ prerelease: false
179
+ version_requirements: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - ! '>'
182
+ - !ruby/object:Gem::Version
183
+ version: '3.0'
184
+ - - <
185
+ - !ruby/object:Gem::Version
186
+ version: '4.2'
187
+ - !ruby/object:Gem::Dependency
188
+ name: railties
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - ! '>'
192
+ - !ruby/object:Gem::Version
193
+ version: '3.0'
194
+ type: :runtime
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ! '>'
199
+ - !ruby/object:Gem::Version
200
+ version: '3.0'
201
+ - !ruby/object:Gem::Dependency
202
+ name: rabl
203
+ requirement: !ruby/object:Gem::Requirement
204
+ requirements:
205
+ - - ~>
206
+ - !ruby/object:Gem::Version
207
+ version: 0.7.9
208
+ type: :runtime
209
+ prerelease: false
210
+ version_requirements: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - ~>
213
+ - !ruby/object:Gem::Version
214
+ version: 0.7.9
215
+ - !ruby/object:Gem::Dependency
216
+ name: jbuilder
217
+ requirement: !ruby/object:Gem::Requirement
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: 0.9.0
222
+ type: :runtime
223
+ prerelease: false
224
+ version_requirements: !ruby/object:Gem::Requirement
225
+ requirements:
226
+ - - ! '>='
227
+ - !ruby/object:Gem::Version
228
+ version: 0.9.0
229
+ - !ruby/object:Gem::Dependency
230
+ name: oj
231
+ requirement: !ruby/object:Gem::Requirement
232
+ requirements:
233
+ - - ~>
234
+ - !ruby/object:Gem::Version
235
+ version: 2.0.0
236
+ type: :runtime
237
+ prerelease: false
238
+ version_requirements: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - ~>
241
+ - !ruby/object:Gem::Version
242
+ version: 2.0.0
243
+ - !ruby/object:Gem::Dependency
244
+ name: ffi
245
+ requirement: !ruby/object:Gem::Requirement
246
+ requirements:
247
+ - - ! '>='
248
+ - !ruby/object:Gem::Version
249
+ version: 1.0.0
250
+ type: :runtime
251
+ prerelease: false
252
+ version_requirements: !ruby/object:Gem::Requirement
253
+ requirements:
254
+ - - ! '>='
255
+ - !ruby/object:Gem::Version
256
+ version: 1.0.0
257
+ - !ruby/object:Gem::Dependency
258
+ name: typhoid
259
+ requirement: !ruby/object:Gem::Requirement
260
+ requirements:
261
+ - - ~>
262
+ - !ruby/object:Gem::Version
263
+ version: 0.0.2
264
+ type: :runtime
265
+ prerelease: false
266
+ version_requirements: !ruby/object:Gem::Requirement
267
+ requirements:
268
+ - - ~>
269
+ - !ruby/object:Gem::Version
270
+ version: 0.0.2
271
+ - !ruby/object:Gem::Dependency
272
+ name: json
273
+ requirement: !ruby/object:Gem::Requirement
274
+ requirements:
275
+ - - ! '>='
276
+ - !ruby/object:Gem::Version
277
+ version: '0'
278
+ type: :runtime
279
+ prerelease: false
280
+ version_requirements: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - ! '>='
283
+ - !ruby/object:Gem::Version
284
+ version: '0'
285
+ description: Building blocks and general helpers for platform services
286
+ email:
287
+ - jon.phenow@sportngin.com
288
+ executables: []
289
+ extensions: []
290
+ extra_rdoc_files: []
291
+ files:
292
+ - .gitignore
293
+ - .octopolo.yml
294
+ - .rspec
295
+ - .ruby-gemset
296
+ - .ruby-version
297
+ - .travis.yml
298
+ - Gemfile
299
+ - LICENSE.txt
300
+ - README.md
301
+ - Rakefile
302
+ - app/models/axel/api_proxy.rb
303
+ - app/models/axel/associations/base.rb
304
+ - app/models/axel/associations/belongs_to.rb
305
+ - app/models/axel/associations/has_many.rb
306
+ - app/models/axel/associations/has_one.rb
307
+ - app/models/axel/payload.rb
308
+ - app/models/axel/payload/base.rb
309
+ - app/models/axel/payload/errors.rb
310
+ - app/models/axel/payload/metadata.rb
311
+ - app/models/axel/querier.rb
312
+ - app/models/axel/router.rb
313
+ - app/models/axel/service_resource.rb
314
+ - app/models/axel/service_resource/associations.rb
315
+ - app/models/axel/service_resource/attributes.rb
316
+ - app/models/axel/service_resource/automatic_resource.rb
317
+ - app/models/axel/service_resource/base.rb
318
+ - app/models/axel/service_resource/builder.rb
319
+ - app/models/axel/service_resource/inspects.rb
320
+ - app/models/axel/service_resource/payload_parser.rb
321
+ - app/models/axel/service_resource/queries.rb
322
+ - app/models/axel/service_resource/requesters.rb
323
+ - app/models/axel/service_resource/routes.rb
324
+ - app/models/axel/service_resource/typhoid_extensions.rb
325
+ - app/views/axel/base/empty.json.erb
326
+ - app/views/axel/base/empty.xml.builder
327
+ - app/views/layouts/axel.json.jbuilder
328
+ - app/views/layouts/axel.xml.builder
329
+ - axel.gemspec
330
+ - lib/axel.rb
331
+ - lib/axel/application_extensions.rb
332
+ - lib/axel/application_helper.rb
333
+ - lib/axel/base_controller.rb
334
+ - lib/axel/cascadable_attribute.rb
335
+ - lib/axel/configurations/resource.rb
336
+ - lib/axel/configurations/service.rb
337
+ - lib/axel/configurator.rb
338
+ - lib/axel/configurators/services.rb
339
+ - lib/axel/controller_base.rb
340
+ - lib/axel/controller_helpers.rb
341
+ - lib/axel/controller_parameters.rb
342
+ - lib/axel/engine.rb
343
+ - lib/axel/inspector.rb
344
+ - lib/axel/payload/remote_error.rb
345
+ - lib/axel/request_options.rb
346
+ - lib/axel/uri.rb
347
+ - lib/axel/version.rb
348
+ - lib/generators/axel/install_generator.rb
349
+ - lib/generators/templates/README.md
350
+ - lib/generators/templates/axel.rb
351
+ - script/rails
352
+ - spec/controllers/pages_controller_spec.rb
353
+ - spec/dummy/README.rdoc
354
+ - spec/dummy/Rakefile
355
+ - spec/dummy/app/assets/javascripts/application.js
356
+ - spec/dummy/app/assets/stylesheets/application.css
357
+ - spec/dummy/app/controllers/application_controller.rb
358
+ - spec/dummy/app/controllers/pages_controller.rb
359
+ - spec/dummy/app/helpers/application_helper.rb
360
+ - spec/dummy/app/mailers/.gitkeep
361
+ - spec/dummy/app/models/.gitkeep
362
+ - spec/dummy/app/views/layouts/application.html.erb
363
+ - spec/dummy/config.ru
364
+ - spec/dummy/config/application.rb
365
+ - spec/dummy/config/boot.rb
366
+ - spec/dummy/config/database.yml
367
+ - spec/dummy/config/environment.rb
368
+ - spec/dummy/config/environments/development.rb
369
+ - spec/dummy/config/environments/production.rb
370
+ - spec/dummy/config/environments/test.rb
371
+ - spec/dummy/config/initializers/backtrace_silencers.rb
372
+ - spec/dummy/config/initializers/inflections.rb
373
+ - spec/dummy/config/initializers/mime_types.rb
374
+ - spec/dummy/config/initializers/secret_token.rb
375
+ - spec/dummy/config/initializers/session_store.rb
376
+ - spec/dummy/config/initializers/wrap_parameters.rb
377
+ - spec/dummy/config/locales/en.yml
378
+ - spec/dummy/config/routes.rb
379
+ - spec/dummy/db/development.sqlite3
380
+ - spec/dummy/db/test.sqlite3
381
+ - spec/dummy/lib/assets/.gitkeep
382
+ - spec/dummy/log/.gitignore
383
+ - spec/dummy/log/.gitkeep
384
+ - spec/dummy/public/404.html
385
+ - spec/dummy/public/422.html
386
+ - spec/dummy/public/500.html
387
+ - spec/dummy/public/favicon.ico
388
+ - spec/dummy/script/rails
389
+ - spec/envelope_integration_check.rb
390
+ - spec/helpers/axel/application_helper_spec.rb
391
+ - spec/lib/axel/associations/base_spec.rb
392
+ - spec/lib/axel/associations/belongs_to_spec.rb
393
+ - spec/lib/axel/associations/has_many_spec.rb
394
+ - spec/lib/axel/associations/has_one_spec.rb
395
+ - spec/lib/axel/configurations/resource_spec.rb
396
+ - spec/lib/axel/configurations/service_spec.rb
397
+ - spec/lib/axel/configurator_spec.rb
398
+ - spec/lib/axel/configurators/services_spec.rb
399
+ - spec/lib/axel/controller_base_spec.rb
400
+ - spec/lib/axel/controller_parameters_spec.rb
401
+ - spec/lib/axel/inspector_spec.rb
402
+ - spec/lib/axel/request_options_spec.rb
403
+ - spec/lib/axel/uri_spec.rb
404
+ - spec/lib/axel_spec.rb
405
+ - spec/models/axel/api_proxy_spec.rb
406
+ - spec/models/axel/payload/errors_spec.rb
407
+ - spec/models/axel/payload/metadata_spec.rb
408
+ - spec/models/axel/querier_spec.rb
409
+ - spec/models/axel/router_spec.rb
410
+ - spec/models/axel/service_resource/base_spec.rb
411
+ - spec/models/axel/service_resource/builder_spec.rb
412
+ - spec/models/axel/service_resource/payload_parser_spec.rb
413
+ - spec/spec_helper.rb
414
+ - spec/support/address.rb
415
+ - spec/support/persona.rb
416
+ - spec/support/user.rb
417
+ - spec/views/axel/base/empty_spec.rb
418
+ homepage: http://github.com/sportngin/axel
419
+ licenses: []
420
+ metadata: {}
421
+ post_install_message:
422
+ rdoc_options: []
423
+ require_paths:
424
+ - lib
425
+ required_ruby_version: !ruby/object:Gem::Requirement
426
+ requirements:
427
+ - - ! '>='
428
+ - !ruby/object:Gem::Version
429
+ version: '0'
430
+ required_rubygems_version: !ruby/object:Gem::Requirement
431
+ requirements:
432
+ - - ! '>='
433
+ - !ruby/object:Gem::Version
434
+ version: '0'
435
+ requirements: []
436
+ rubyforge_project:
437
+ rubygems_version: 2.4.6
438
+ signing_key:
439
+ specification_version: 4
440
+ summary: Consistent controller responses, Resources for querying other services consistently,
441
+ along with some general app support
442
+ test_files:
443
+ - spec/controllers/pages_controller_spec.rb
444
+ - spec/dummy/README.rdoc
445
+ - spec/dummy/Rakefile
446
+ - spec/dummy/app/assets/javascripts/application.js
447
+ - spec/dummy/app/assets/stylesheets/application.css
448
+ - spec/dummy/app/controllers/application_controller.rb
449
+ - spec/dummy/app/controllers/pages_controller.rb
450
+ - spec/dummy/app/helpers/application_helper.rb
451
+ - spec/dummy/app/mailers/.gitkeep
452
+ - spec/dummy/app/models/.gitkeep
453
+ - spec/dummy/app/views/layouts/application.html.erb
454
+ - spec/dummy/config.ru
455
+ - spec/dummy/config/application.rb
456
+ - spec/dummy/config/boot.rb
457
+ - spec/dummy/config/database.yml
458
+ - spec/dummy/config/environment.rb
459
+ - spec/dummy/config/environments/development.rb
460
+ - spec/dummy/config/environments/production.rb
461
+ - spec/dummy/config/environments/test.rb
462
+ - spec/dummy/config/initializers/backtrace_silencers.rb
463
+ - spec/dummy/config/initializers/inflections.rb
464
+ - spec/dummy/config/initializers/mime_types.rb
465
+ - spec/dummy/config/initializers/secret_token.rb
466
+ - spec/dummy/config/initializers/session_store.rb
467
+ - spec/dummy/config/initializers/wrap_parameters.rb
468
+ - spec/dummy/config/locales/en.yml
469
+ - spec/dummy/config/routes.rb
470
+ - spec/dummy/db/development.sqlite3
471
+ - spec/dummy/db/test.sqlite3
472
+ - spec/dummy/lib/assets/.gitkeep
473
+ - spec/dummy/log/.gitignore
474
+ - spec/dummy/log/.gitkeep
475
+ - spec/dummy/public/404.html
476
+ - spec/dummy/public/422.html
477
+ - spec/dummy/public/500.html
478
+ - spec/dummy/public/favicon.ico
479
+ - spec/dummy/script/rails
480
+ - spec/envelope_integration_check.rb
481
+ - spec/helpers/axel/application_helper_spec.rb
482
+ - spec/lib/axel/associations/base_spec.rb
483
+ - spec/lib/axel/associations/belongs_to_spec.rb
484
+ - spec/lib/axel/associations/has_many_spec.rb
485
+ - spec/lib/axel/associations/has_one_spec.rb
486
+ - spec/lib/axel/configurations/resource_spec.rb
487
+ - spec/lib/axel/configurations/service_spec.rb
488
+ - spec/lib/axel/configurator_spec.rb
489
+ - spec/lib/axel/configurators/services_spec.rb
490
+ - spec/lib/axel/controller_base_spec.rb
491
+ - spec/lib/axel/controller_parameters_spec.rb
492
+ - spec/lib/axel/inspector_spec.rb
493
+ - spec/lib/axel/request_options_spec.rb
494
+ - spec/lib/axel/uri_spec.rb
495
+ - spec/lib/axel_spec.rb
496
+ - spec/models/axel/api_proxy_spec.rb
497
+ - spec/models/axel/payload/errors_spec.rb
498
+ - spec/models/axel/payload/metadata_spec.rb
499
+ - spec/models/axel/querier_spec.rb
500
+ - spec/models/axel/router_spec.rb
501
+ - spec/models/axel/service_resource/base_spec.rb
502
+ - spec/models/axel/service_resource/builder_spec.rb
503
+ - spec/models/axel/service_resource/payload_parser_spec.rb
504
+ - spec/spec_helper.rb
505
+ - spec/support/address.rb
506
+ - spec/support/persona.rb
507
+ - spec/support/user.rb
508
+ - spec/views/axel/base/empty_spec.rb