support active model serializer 0.9.x

This commit is contained in:
Stephane Bounmy 2014-06-29 22:18:08 +02:00
parent cfc6a02c65
commit e30af569b2
2 changed files with 15 additions and 12 deletions

View file

@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
gem.licenses = ['MIT'] gem.licenses = ['MIT']
gem.add_dependency "grape", "~> 0.3" gem.add_dependency "grape", "~> 0.3"
gem.add_dependency "active_model_serializers", ">= 0.8.1" gem.add_dependency "active_model_serializers", ">= 0.9.0.alpha1"
gem.add_development_dependency "rspec" gem.add_development_dependency "rspec"
gem.add_development_dependency "rack-test" gem.add_development_dependency "rack-test"

View file

@ -16,28 +16,27 @@ module Grape
endpoint = env['api.endpoint'] endpoint = env['api.endpoint']
options = build_options_from_endpoint(endpoint) options = build_options_from_endpoint(endpoint)
if resource.respond_to?(:to_ary) && !resource.empty? if serializer = options.fetch(:serializer, ActiveModel::Serializer.serializer_for(resource))
# ensure we have an root to fallback on options[:scope] = serialization_scope unless options.has_key?(:scope)
endpoint.controller_name = default_root(endpoint) if resource.respond_to?(:to_ary) && !resource.empty?
# ensure we have an root to fallback on
options[:resource_name] = default_root(endpoint)
end
serializer.new(resource, options.merge(other_options))
end end
::ActiveModel::Serializer.build_json(endpoint,
resource,
options.merge(other_options)
)
end end
def other_options def other_options
options = {} options = {}
if @meta_content_items if @meta_content_items
meta_option = @meta_content_items[:meta]
@meta_content_items.delete(:meta)
options[:meta] = meta_option if meta_option
if @meta_key if @meta_key
key_option = @meta_key[:meta_key] key_option = @meta_key[:meta_key]
@meta_key.delete(:meta_key) @meta_key.delete(:meta_key)
options[:meta_key] = key_option if key_option options[:meta_key] = key_option if key_option
end end
meta_option = @meta_content_items[:meta]
@meta_content_items.delete(:meta)
options[key_option || :meta] = meta_option if meta_option
end end
options options
end end
@ -73,6 +72,10 @@ module Grape
endpoint.options[:path][0].to_s.split('/')[-1] endpoint.options[:path][0].to_s.split('/')[-1]
end end
end end
def serialization_scope
:current_user
end
end end
end end
end end