eipiai 0.7.0 → 0.8.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 (35) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +27 -0
  3. data/Rakefile +7 -13
  4. data/TODO.md +13 -0
  5. data/eipiai.gemspec +2 -1
  6. data/features/resources/api.feature +1 -0
  7. data/features/resources/collection.feature +1 -0
  8. data/features/resources/health.feature +17 -0
  9. data/features/resources/singular.feature +1 -0
  10. data/features/step_definitions/webmachine_steps.rb +1 -1
  11. data/lib/eipiai.rb +3 -3
  12. data/lib/eipiai/representers.rb +7 -0
  13. data/lib/eipiai/{roar/representers → representers}/api.rb +1 -1
  14. data/lib/eipiai/{roar/representers → representers}/base.rb +0 -0
  15. data/lib/eipiai/{roar/ext → representers/ext/roar}/hal.rb +0 -0
  16. data/lib/eipiai/resources.rb +14 -0
  17. data/lib/eipiai/{webmachine/resources → resources}/api.rb +16 -2
  18. data/lib/eipiai/{webmachine/resources → resources}/base.rb +30 -2
  19. data/lib/eipiai/{webmachine/resources → resources}/collection.rb +1 -1
  20. data/lib/eipiai/{webmachine/resources → resources}/concerns/objectifiable.rb +0 -0
  21. data/lib/eipiai/{webmachine/resources → resources}/concerns/representable.rb +0 -0
  22. data/lib/eipiai/{webmachine/ext → resources/ext/webmachine}/decision.rb +0 -0
  23. data/lib/eipiai/{webmachine/ext → resources/ext/webmachine}/request.rb +0 -0
  24. data/lib/eipiai/{webmachine/resources → resources}/health.rb +5 -1
  25. data/lib/eipiai/{webmachine/resources → resources}/singular.rb +1 -1
  26. data/lib/eipiai/validators.rb +5 -0
  27. data/lib/eipiai/{validation/validators → validators}/base.rb +0 -0
  28. data/lib/eipiai/{validation → validators}/concerns/formatted_errors.rb +0 -0
  29. data/lib/eipiai/{validation/validators → validators}/sequel.rb +1 -1
  30. data/lib/eipiai/version.rb +1 -1
  31. data/script/test +3 -1
  32. metadata +38 -23
  33. data/lib/eipiai/roar.rb +0 -7
  34. data/lib/eipiai/validation.rb +0 -5
  35. data/lib/eipiai/webmachine.rb +0 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6ea1d2843bc6b4a1b1ed2e268f3a287cdb6c591d
4
- data.tar.gz: 72f7c6c496142c5dc5caed1faf5a5c83b1bb810f
3
+ metadata.gz: 3caaef63d30433d05c9c5dff0b84ca61f641f1b8
4
+ data.tar.gz: 274f803c8f29821db1379cfeb87b3ad78642d828
5
5
  SHA512:
6
- metadata.gz: 88c91bbeb2dc81e6337069fd9053c8c5c262a0a43fd7b70a865c544dedb67061c58648ab2ec14cb93982e6bb1d1fa23df259ce2f5fe97c033fc19fbc04560747
7
- data.tar.gz: 5a109aac02025614a11feb80a853f12ad980f6c0537e8fef5b77ea3acae12555b09df0d2fc455ab86d70d49298bd147151f4d3bdda479860ab1aa0b0f00c3c8b
6
+ metadata.gz: cb59e4936e0cfeb9c76e6e86aba56122866a729641c780e08dc5dc6599937fc3dafc24ff02a3071fdbdd869e84330217915b412535b1fa84288c49f2c18f6a67
7
+ data.tar.gz: 4e0b204b1adc63678bbd9c2a854f25d3a6f6bcf0c39936486ca722e2e6e8d2da20554a46d3a59fb63b9ed2e026811cfc8ebd2648911a73c89a5012e04ff5952e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## [unreleased](https://github.com/blendle/eipiai/tree/unreleased) (2016-05-04)
4
+ [Full Changelog](https://github.com/blendle/eipiai/compare/v0.7.0...unreleased)
5
+
6
+ **Closed issues:**
7
+
8
+ - make HealthCheck a singleton [\#19](https://github.com/blendle/eipiai/issues/19)
9
+
10
+ ## [v0.7.0](https://github.com/blendle/eipiai/tree/v0.7.0) (2016-05-03)
11
+ [Full Changelog](https://github.com/blendle/eipiai/compare/v0.6.0...v0.7.0)
12
+
13
+ **Closed issues:**
14
+
15
+ - api.json should be opt-in, not out-out [\#13](https://github.com/blendle/eipiai/issues/13)
16
+ - Rewrite auto API generator to use some kind of template [\#11](https://github.com/blendle/eipiai/issues/11)
17
+ - Rename `handle\_post\_response` [\#5](https://github.com/blendle/eipiai/issues/5)
18
+
19
+ **Merged pull requests:**
20
+
21
+ - add new testing setup [\#23](https://github.com/blendle/eipiai/pull/23) ([JeanMertz](https://github.com/JeanMertz))
22
+ - correctly handle PUT and POST on existing resources [\#22](https://github.com/blendle/eipiai/pull/22) ([JeanMertz](https://github.com/JeanMertz))
23
+ - Tweaks and fixes v2 [\#21](https://github.com/blendle/eipiai/pull/21) ([JeanMertz](https://github.com/JeanMertz))
24
+ - add `service\_available?` check by default [\#18](https://github.com/blendle/eipiai/pull/18) ([JeanMertz](https://github.com/JeanMertz))
25
+ - add Eipiai::Resource::Representable module for resources [\#17](https://github.com/blendle/eipiai/pull/17) ([JeanMertz](https://github.com/JeanMertz))
26
+ - minor tweaks and fixes [\#16](https://github.com/blendle/eipiai/pull/16) ([JeanMertz](https://github.com/JeanMertz))
27
+ - Update Rubocop auto-correct issues [\#15](https://github.com/blendle/eipiai/pull/15) ([JeanMertz](https://github.com/JeanMertz))
28
+ - Introduce options to better define resource link relations [\#14](https://github.com/blendle/eipiai/pull/14) ([JeanMertz](https://github.com/JeanMertz))
29
+
3
30
  ## [v0.6.0](https://github.com/blendle/eipiai/tree/v0.6.0) (2015-12-18)
4
31
  [Full Changelog](https://github.com/blendle/eipiai/compare/v0.5.1...v0.6.0)
5
32
 
data/Rakefile CHANGED
@@ -3,24 +3,18 @@ require 'bundler/gem_tasks'
3
3
  require 'cucumber/rake/task'
4
4
  require 'rubocop/rake_task'
5
5
  require 'yard-doctest'
6
+ require 'github_changelog_generator/task'
6
7
 
7
8
  task default: %w(rubocop features yard:doctest)
8
9
 
9
10
  RuboCop::RakeTask.new
10
11
 
11
- desc 'Update CHANGELOG.md'
12
- task 'changelog' do
13
- args = %w(
14
- --user=blendle
15
- --project=eipiai
16
- --header-label="# CHANGELOG"
17
- --bug-labels=type/bug,bug
18
- --enhancement-labels=type/enhancement,enhancement
19
- --future-release=unreleased
20
- --no-verbose
21
- )
22
-
23
- sh %(github_changelog_generator #{args.join(' ')})
12
+ GitHubChangelogGenerator::RakeTask.new :changelog do |c|
13
+ c.user = 'blendle'
14
+ c.project = 'eipiai'
15
+ c.header = '# CHANGELOG'
16
+ c.future_release = 'unreleased'
17
+ c.release_branch = 'master'
24
18
  end
25
19
 
26
20
  YARD::Doctest::RakeTask.new do |task|
data/TODO.md ADDED
@@ -0,0 +1,13 @@
1
+ # TODO
2
+
3
+ Some notes and snippets on things we might want to do in the future:
4
+
5
+ * [IRBWebmachine](https://github.com/generalassembly/irwebmachine)
6
+
7
+ Could potentially improve debugging. Hasn't been updated in a while, it looks
8
+ like some issues where created about it not working anymore. Duplicate some of
9
+ the basic functionality?
10
+
11
+ * [http://dry-rb.org](http://dry-rb.org)
12
+
13
+ Some useful gems. Validation? Types?
data/eipiai.gemspec CHANGED
@@ -23,9 +23,10 @@ Gem::Specification.new do |spec|
23
23
  spec.add_runtime_dependency 'webmachine'
24
24
 
25
25
  spec.add_development_dependency 'bundler'
26
- spec.add_development_dependency 'cucumber'
27
26
  spec.add_development_dependency 'cucumber-blendle-steps'
27
+ spec.add_development_dependency 'cucumber'
28
28
  spec.add_development_dependency 'database_cleaner'
29
+ spec.add_development_dependency 'github_changelog_generator'
29
30
  spec.add_development_dependency 'pry'
30
31
  spec.add_development_dependency 'rack-test'
31
32
  spec.add_development_dependency 'rack'
@@ -52,6 +52,7 @@ Feature: Request entrypoint of API
52
52
 
53
53
  When the client does a GET request to "/api"
54
54
  Then the status code should be "200" (OK)
55
+ And the response contains the "Etag" header with value ""6566f445b1a56bc846ef9b95d5d79656""
55
56
  And the response should be HAL/JSON:
56
57
  """json
57
58
  {
@@ -18,6 +18,7 @@ Feature: Request a collection of resources
18
18
  When the client provides the header "Accept: application/json"
19
19
  And the client does a GET request to the "items" resource
20
20
  Then the status code should be "200" (OK)
21
+ And the response contains the "Cache-Control" header with value "no-cache, no-store, must-revalidate, private"
21
22
  And the response should be JSON:
22
23
  """json
23
24
  {
@@ -25,3 +25,20 @@ Feature: Request entrypoint of API
25
25
  "healthy": false
26
26
  }
27
27
  """
28
+
29
+ Scenario: Return 503 on resources for an unhealthy service
30
+ Given the configuration "healthy" is set to "false"
31
+ And the following top-level resource at "/items":
32
+ """ruby
33
+ class ItemsResource < Webmachine::Resource
34
+ include Eipiai::Resource
35
+
36
+ def object
37
+ {}
38
+ end
39
+ end
40
+ """
41
+ When the client does a GET request to the "items" resource
42
+ Then the status code should be "503" (Service Unavailable)
43
+ And the response contains the "Retry-After" header with value "60"
44
+ And the response contains the "Cache-Control" header with value "no-cache, no-store, must-revalidate, private"
@@ -19,6 +19,7 @@ Feature: Working with singular resources (GET, POST, PUT, DELETE)
19
19
  When the client provides the header "Accept: application/json"
20
20
  And the client does a GET request to the "item" resource with the template variable "item_uid" set to "hello"
21
21
  Then the status code should be "200" (OK)
22
+ And the response contains the "Cache-Control" header with value "no-cache, no-store, must-revalidate, private"
22
23
  And the response should be JSON:
23
24
  """json
24
25
  {
@@ -54,5 +54,5 @@ After do
54
54
  # Remove links from ApiRepresenter
55
55
  #
56
56
  Eipiai.class_exec { remove_const(:ApiRepresenter) }
57
- load 'eipiai/roar/representers/api.rb'
57
+ load 'eipiai/representers/api.rb'
58
58
  end
data/lib/eipiai.rb CHANGED
@@ -2,6 +2,6 @@
2
2
  require 'eipiai/configuration'
3
3
 
4
4
  require 'eipiai/models'
5
- require 'eipiai/roar'
6
- require 'eipiai/validation'
7
- require 'eipiai/webmachine'
5
+ require 'eipiai/representers'
6
+ require 'eipiai/resources'
7
+ require 'eipiai/validators'
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+ require 'roar'
3
+
4
+ require 'eipiai/representers/ext/roar/hal'
5
+
6
+ require 'eipiai/representers/api'
7
+ require 'eipiai/representers/base'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- require 'eipiai/roar/representers/base'
2
+ require 'eipiai/representers/base'
3
3
 
4
4
  module Eipiai
5
5
  # ApiRepresenter
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+ require 'webmachine'
3
+
4
+ require 'eipiai/resources/concerns/objectifiable'
5
+ require 'eipiai/resources/concerns/representable'
6
+
7
+ require 'eipiai/resources/ext/webmachine/decision'
8
+ require 'eipiai/resources/ext/webmachine/request'
9
+
10
+ require 'eipiai/resources/api'
11
+ require 'eipiai/resources/base'
12
+ require 'eipiai/resources/collection'
13
+ require 'eipiai/resources/health'
14
+ require 'eipiai/resources/singular'
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
- require 'eipiai/webmachine/resources/base'
2
+ require 'eipiai/resources/base'
3
3
 
4
+ require 'active_support/core_ext/module/attribute_accessors'
4
5
  require 'active_support/core_ext/string/inflections'
5
6
  require 'json'
6
7
 
@@ -22,15 +23,28 @@ module Eipiai
22
23
  class ApiResource < Webmachine::Resource
23
24
  include Resource
24
25
 
26
+ # `etag` is set once, and then re-used throughout the lifecycle of the
27
+ # application. Only a restart of the web server will reset its value.
28
+ #
29
+ mattr_accessor :etag
30
+
25
31
  def top_level_relation?
26
32
  true
27
33
  end
28
34
 
35
+ def service_available?
36
+ true
37
+ end
38
+
39
+ def generate_etag
40
+ self.class.etag ||= Digest::MD5.hexdigest(to_json)
41
+ end
42
+
29
43
  def allowed_methods
30
44
  %w(GET)
31
45
  end
32
46
 
33
- def cache_header
47
+ def cache_control_header_value
34
48
  'public, max-age=600, s-maxage=86400'
35
49
  end
36
50
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
- require 'eipiai/webmachine/resources/singular'
3
- require 'eipiai/webmachine/resources/collection'
2
+ require 'eipiai/resources/singular'
3
+ require 'eipiai/resources/collection'
4
4
 
5
5
  require 'active_support/core_ext/string/inflections'
6
6
  require 'json'
@@ -75,9 +75,23 @@ module Eipiai
75
75
  []
76
76
  end
77
77
 
78
+ # service_available?
79
+ #
80
+ # If the service is unavailable, this method should return false. By
81
+ # default, this method calls the `HealthCheck#healthy?` method, which in
82
+ # turn returns `true` or `false`, depending on the state of the service and
83
+ # its dependencies.
84
+ #
85
+ # When the service is unavailable, the `Cache-Control` header is set to not
86
+ # allow any caching by proxies/clients, and sets the `Retry-After` header to
87
+ # tell the client to retry again in 60 seconds.
88
+ #
89
+ # @return [true, false]
90
+ #
78
91
  def service_available?
79
92
  return true if Eipiai::HealthCheck.new.healthy?
80
93
 
94
+ response.headers['Cache-Control'] = 'no-cache, no-store, must-revalidate, private'
81
95
  response.headers['Retry-After'] = '60'
82
96
  false
83
97
  end
@@ -138,6 +152,10 @@ module Eipiai
138
152
  true
139
153
  end
140
154
 
155
+ def finish_request
156
+ response.headers['Cache-Control'] = cache_control_header_value
157
+ end
158
+
141
159
  # params
142
160
  #
143
161
  # Given a string in JSON format, returns the hash representation of that
@@ -225,6 +243,16 @@ module Eipiai
225
243
 
226
244
  private
227
245
 
246
+ # cache_control_header_value
247
+ #
248
+ # The default Cache-Control header value served by all resources.
249
+ #
250
+ # @return String default Cache-Control header value
251
+ #
252
+ def cache_control_header_value
253
+ 'no-cache, no-store, must-revalidate, private'
254
+ end
255
+
228
256
  def json_error_body(errors)
229
257
  response.headers['Content-Type'] = 'application/json'
230
258
  response.body = FormattedErrors.parse(errors).to_json
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- require 'eipiai/webmachine/resources/base'
2
+ require 'eipiai/resources/base'
3
3
 
4
4
  module Eipiai
5
5
  # CollectionResource
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- require 'eipiai/webmachine/resources/base'
2
+ require 'eipiai/resources/base'
3
3
 
4
4
  require 'active_support/core_ext/string/inflections'
5
5
  require 'json'
@@ -63,6 +63,10 @@ module Eipiai
63
63
  false
64
64
  end
65
65
 
66
+ def finish_request
67
+ response.headers['Cache-Control'] = 'no-cache, no-store, must-revalidate, private'
68
+ end
69
+
66
70
  def object
67
71
  HealthCheck.new
68
72
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- require 'eipiai/webmachine/resources/base'
2
+ require 'eipiai/resources/base'
3
3
 
4
4
  require 'active_support/core_ext/object/blank'
5
5
  require 'active_support/core_ext/string/inflections'
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+ require 'eipiai/validators/concerns/formatted_errors'
3
+
4
+ require 'eipiai/validators/base'
5
+ require 'eipiai/validators/sequel'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
- require 'eipiai/validation/validators/base'
2
+ require 'eipiai/validators/base'
3
3
 
4
4
  module Eipiai
5
5
  # SequelValidator
@@ -4,5 +4,5 @@
4
4
  # The current version of the Eipiai library.
5
5
  #
6
6
  module Eipiai
7
- VERSION = '0.7.0'
7
+ VERSION = '0.8.0'
8
8
  end
data/script/test CHANGED
@@ -1,3 +1,5 @@
1
1
  #!/bin/sh
2
2
 
3
- bundle exec rake
3
+ bundle exec cucumber --strict --no-source --order random --tags ~@wip "$@"
4
+ yard doctest --pride
5
+ bundle exec rubocop -DSE
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eipiai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean Mertz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-03 00:00:00.000000000 Z
11
+ date: 2016-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: cucumber
84
+ name: cucumber-blendle-steps
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -95,7 +95,7 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: cucumber-blendle-steps
98
+ name: cucumber
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
@@ -122,6 +122,20 @@ dependencies:
122
122
  - - ">="
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: github_changelog_generator
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: pry
127
141
  requirement: !ruby/object:Gem::Requirement
@@ -236,6 +250,7 @@ files:
236
250
  - Gemfile
237
251
  - README.md
238
252
  - Rakefile
253
+ - TODO.md
239
254
  - eipiai.gemspec
240
255
  - features/resources/api.feature
241
256
  - features/resources/collection.feature
@@ -258,25 +273,25 @@ files:
258
273
  - lib/eipiai/models.rb
259
274
  - lib/eipiai/models/collection.rb
260
275
  - lib/eipiai/models/representable.rb
261
- - lib/eipiai/roar.rb
262
- - lib/eipiai/roar/ext/hal.rb
263
- - lib/eipiai/roar/representers/api.rb
264
- - lib/eipiai/roar/representers/base.rb
265
- - lib/eipiai/validation.rb
266
- - lib/eipiai/validation/concerns/formatted_errors.rb
267
- - lib/eipiai/validation/validators/base.rb
268
- - lib/eipiai/validation/validators/sequel.rb
276
+ - lib/eipiai/representers.rb
277
+ - lib/eipiai/representers/api.rb
278
+ - lib/eipiai/representers/base.rb
279
+ - lib/eipiai/representers/ext/roar/hal.rb
280
+ - lib/eipiai/resources.rb
281
+ - lib/eipiai/resources/api.rb
282
+ - lib/eipiai/resources/base.rb
283
+ - lib/eipiai/resources/collection.rb
284
+ - lib/eipiai/resources/concerns/objectifiable.rb
285
+ - lib/eipiai/resources/concerns/representable.rb
286
+ - lib/eipiai/resources/ext/webmachine/decision.rb
287
+ - lib/eipiai/resources/ext/webmachine/request.rb
288
+ - lib/eipiai/resources/health.rb
289
+ - lib/eipiai/resources/singular.rb
290
+ - lib/eipiai/validators.rb
291
+ - lib/eipiai/validators/base.rb
292
+ - lib/eipiai/validators/concerns/formatted_errors.rb
293
+ - lib/eipiai/validators/sequel.rb
269
294
  - lib/eipiai/version.rb
270
- - lib/eipiai/webmachine.rb
271
- - lib/eipiai/webmachine/ext/decision.rb
272
- - lib/eipiai/webmachine/ext/request.rb
273
- - lib/eipiai/webmachine/resources/api.rb
274
- - lib/eipiai/webmachine/resources/base.rb
275
- - lib/eipiai/webmachine/resources/collection.rb
276
- - lib/eipiai/webmachine/resources/concerns/objectifiable.rb
277
- - lib/eipiai/webmachine/resources/concerns/representable.rb
278
- - lib/eipiai/webmachine/resources/health.rb
279
- - lib/eipiai/webmachine/resources/singular.rb
280
295
  - script/bootstrap
281
296
  - script/documentation
282
297
  - script/test
@@ -299,7 +314,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
299
314
  version: '0'
300
315
  requirements: []
301
316
  rubyforge_project:
302
- rubygems_version: 2.5.1
317
+ rubygems_version: 2.6.4
303
318
  signing_key:
304
319
  specification_version: 4
305
320
  summary: Opinionated JSON-API stack to get the job done.
data/lib/eipiai/roar.rb DELETED
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'roar'
3
-
4
- require 'eipiai/roar/ext/hal'
5
-
6
- require 'eipiai/roar/representers/api'
7
- require 'eipiai/roar/representers/base'
@@ -1,5 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'eipiai/validation/concerns/formatted_errors'
3
-
4
- require 'eipiai/validation/validators/base'
5
- require 'eipiai/validation/validators/sequel'
@@ -1,14 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'webmachine'
3
-
4
- require 'eipiai/webmachine/ext/decision'
5
- require 'eipiai/webmachine/ext/request'
6
-
7
- require 'eipiai/webmachine/resources/concerns/objectifiable'
8
- require 'eipiai/webmachine/resources/concerns/representable'
9
-
10
- require 'eipiai/webmachine/resources/api'
11
- require 'eipiai/webmachine/resources/base'
12
- require 'eipiai/webmachine/resources/collection'
13
- require 'eipiai/webmachine/resources/health'
14
- require 'eipiai/webmachine/resources/singular'