shamu 0.0.5 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/generators/shamu/api_controller/api_controller_generator.rb +15 -0
- data/lib/generators/shamu/api_controller/templates/api_controller.rb +9 -0
- data/lib/generators/shamu/api_controller/templates/api_responder.rb +4 -0
- data/lib/generators/shamu/application_presenter/application_presenter_generator.rb +15 -0
- data/lib/generators/shamu/application_presenter/templates/application_presenter.rb +8 -0
- data/lib/generators/shamu.rb +4 -0
- data/lib/shamu/json_api/context.rb +2 -3
- data/lib/shamu/rails/json_api.rb +4 -4
- data/lib/shamu/rails/railtie.rb +4 -0
- data/lib/shamu/version.rb +1 -1
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 17d15280c07fb25429f25d595d1f30f7a5509f52
|
4
|
+
data.tar.gz: cf2f8593461815af79b589332bdc56569bef2de5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f954b06458d9728ccdd30636e478ab90e16cd24280a874fbf402c98bad9b59e67c1691895f80ee57643417f783bee7de16613bcdf0875b6cd036f94048798c9
|
7
|
+
data.tar.gz: 13f497d44a24128bbe7e479547efcb3da461b72cf3d06fb0ec3c2dd8190b73ff0c79937debbae8bbef6c58c47ea45b2ca516ec0275876563d9728eb3620d9275
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require "generators/rspec"
|
2
|
+
|
3
|
+
module Shamu
|
4
|
+
module Generators
|
5
|
+
# @!visibility private
|
6
|
+
class ApiControllerGenerator < ::Rails::Generators::Base
|
7
|
+
desc "Generate the default api conroller for JSON API responses"
|
8
|
+
source_root File.expand_path("../templates", __FILE__)
|
9
|
+
|
10
|
+
def copy_api_controller_file
|
11
|
+
copy_file "api_controller.rb", "app/controllers/api_controller.rb"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require "generators/rspec"
|
2
|
+
|
3
|
+
module Shamu
|
4
|
+
module Generators
|
5
|
+
# @!visibility private
|
6
|
+
class ApplicationPresenterGenerator < ::Rails::Generators::Base
|
7
|
+
desc "Generate the default application presenter"
|
8
|
+
source_root File.expand_path("../templates", __FILE__)
|
9
|
+
|
10
|
+
def copy_application_presenter_file
|
11
|
+
copy_file "application_presenter.rb", "app/presenters/application_presenter.rb"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# Base {Shamu::JsonApi::Presenter} that all other presenters should
|
2
|
+
# inherit from.
|
3
|
+
class ApplicationPresenter < shamu::JsonApi::Presenter
|
4
|
+
include ::Rails.application.routes.url_helpers
|
5
|
+
|
6
|
+
# Override default_url_options in config/environments files.
|
7
|
+
self.default_url_options = Rails.application.config.shamu.json_api.default_url_options
|
8
|
+
end
|
@@ -88,7 +88,7 @@ module Shamu
|
|
88
88
|
# @raise [NoPresenter] if a presenter cannot be found.
|
89
89
|
def find_presenter( resource )
|
90
90
|
presenter = presenters[ resource.class ]
|
91
|
-
presenter ||= find_namespace_presenter( resource )
|
91
|
+
presenter ||= presenters[ resource.class ] = find_namespace_presenter( resource )
|
92
92
|
|
93
93
|
fail NoPresenter.new( resource, namespaces ) unless presenter
|
94
94
|
|
@@ -136,8 +136,7 @@ module Shamu
|
|
136
136
|
|
137
137
|
namespaces.each do |namespace|
|
138
138
|
begin
|
139
|
-
|
140
|
-
return scope.const_get( name, false ) if scope.const_defined?( name, false )
|
139
|
+
return "#{ namespace }::#{ name }".constantize
|
141
140
|
rescue NameError # rubocop:disable Lint/HandleExceptions
|
142
141
|
end
|
143
142
|
end
|
data/lib/shamu/rails/json_api.rb
CHANGED
@@ -34,7 +34,7 @@ module Shamu
|
|
34
34
|
response = build_json_response( context )
|
35
35
|
response.resource resource, presenter
|
36
36
|
yield response if block_given?
|
37
|
-
response
|
37
|
+
response.to_json
|
38
38
|
end
|
39
39
|
|
40
40
|
# Builds a well-formed JSON API response for a collection of resources.
|
@@ -53,7 +53,7 @@ module Shamu
|
|
53
53
|
response.collection resources, presenter
|
54
54
|
json_paginate_resources response, resources, pagination
|
55
55
|
yield response if block_given?
|
56
|
-
response
|
56
|
+
response.to_json
|
57
57
|
end
|
58
58
|
|
59
59
|
# Add page-based pagination links for the resources to the builder.
|
@@ -89,7 +89,7 @@ module Shamu
|
|
89
89
|
yield builder if block_given?
|
90
90
|
end
|
91
91
|
|
92
|
-
response
|
92
|
+
response.to_json
|
93
93
|
end
|
94
94
|
|
95
95
|
# Write all the validation errors from a record to the response.
|
@@ -102,7 +102,7 @@ module Shamu
|
|
102
102
|
response = build_json_response( context )
|
103
103
|
response.validation_errors errors, &block
|
104
104
|
|
105
|
-
response
|
105
|
+
response.to_json
|
106
106
|
end
|
107
107
|
|
108
108
|
JSON_CONTEXT_KEYWORDS = [ :fields, :namespaces, :presenters ].freeze
|
data/lib/shamu/rails/railtie.rb
CHANGED
@@ -13,6 +13,10 @@ module Shamu
|
|
13
13
|
end
|
14
14
|
|
15
15
|
initializer "shamu.configure" do
|
16
|
+
config.shamu = ActiveSupport::OrderedOptions.new
|
17
|
+
config.shamu.json_api = ActiveSupport::OrderedOptions.new
|
18
|
+
config.shamu.json_api.default_url_options = {}
|
19
|
+
|
16
20
|
if defined? ::ActionController
|
17
21
|
::ActionController::Base.send :include, Shamu::Rails::Controller
|
18
22
|
::ActionController::Base.send :include, Shamu::Rails::Entity
|
data/lib/shamu/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shamu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Paul Alexander
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -200,6 +200,12 @@ files:
|
|
200
200
|
- Rakefile
|
201
201
|
- circle.yml
|
202
202
|
- config.ru
|
203
|
+
- lib/generators/shamu.rb
|
204
|
+
- lib/generators/shamu/api_controller/api_controller_generator.rb
|
205
|
+
- lib/generators/shamu/api_controller/templates/api_controller.rb
|
206
|
+
- lib/generators/shamu/api_controller/templates/api_responder.rb
|
207
|
+
- lib/generators/shamu/application_presenter/application_presenter_generator.rb
|
208
|
+
- lib/generators/shamu/application_presenter/templates/application_presenter.rb
|
203
209
|
- lib/shamu.rb
|
204
210
|
- lib/shamu/active_record.rb
|
205
211
|
- lib/shamu/attributes.rb
|