forked from rails-api/active_model_serializers
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Grape formatter feature requested in rails-api#1268
- adds handling for when the returned resource is not serializable via ams - fix for when resource is an Array - fixing last checkin - Adds intellij .idea file to .gitignore - Moves grape include to grape namespace. Changes Enumerable to Array because a plain hash is enumerable. - rubocop corrections - Rebased and squashed commits, resubmitted to CI
- Loading branch information
1 parent
efe5128
commit 2ac7389
Showing
4 changed files
with
41 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -21,3 +21,4 @@ tmp | |
*.swp | ||
.ruby-version | ||
.ruby-gemset | ||
.idea |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
# To add grape support, require 'grape/active_model_serializers' in the base of your grape endpoints | ||
# Then add 'formatter :json, Grape::Formatters::ActiveModelSerializers' to the endpoints | ||
# Then add 'helpers Grape::Helpers::ActiveModelSerializers' to the endpoints | ||
require 'active_model_serializers' | ||
require 'grape/formatters/active_model_serializers' | ||
require 'grape/helpers/active_model_serializers' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
# A grape response formatter that can be used as 'formatter :json, Grape::Formatters::ActiveModelSerializers' | ||
# | ||
# Serializer options can be passed as a hash from your grape endpoint using env[:active_model_serializer_options], | ||
# or better yet user the render helper in Grape::Helpers::ActiveModelSerializers | ||
module Grape | ||
module Formatters | ||
module ActiveModelSerializers | ||
class << self | ||
def call(resource, env) | ||
return resource.to_json unless resource.is_a?(Array) || resource.respond_to?(:model_name) | ||
serializer_options = {} | ||
serializer_options.merge!(env[:active_model_serializer_options]) if env[:active_model_serializer_options] | ||
ActiveModel::SerializableResource.new(resource, serializer_options).to_json | ||
end | ||
end | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# Helpers can be included in your grape endpoint as: helpers Grape::Helpers::ActiveModelSerializers | ||
module Grape | ||
module Helpers | ||
module ActiveModelSerializers | ||
# A convenience method for passing ActiveModelSerializer serializer options | ||
# | ||
# Example: To include relationships in the response: render(post, include: ['comments']) | ||
# | ||
# Example: To include pagination meta data: render(posts, meta: { page: posts.page, total_pages: posts.total_pages }) | ||
def render(resource, active_model_serializer_options = {}) | ||
env[:active_model_serializer_options] = active_model_serializer_options | ||
resource | ||
end | ||
end | ||
end | ||
end |