mirror of
https://github.com/samsonjs/grape-active_model_serializers.git
synced 2026-04-27 14:57:43 +00:00
Merge pull request #36 from dblock/grape-10
Added support for Grape 0.10.x
This commit is contained in:
commit
cc6389f0ca
8 changed files with 66 additions and 28 deletions
15
.travis.yml
Normal file
15
.travis.yml
Normal file
|
|
@ -0,0 +1,15 @@
|
||||||
|
language: ruby
|
||||||
|
|
||||||
|
sudo: false
|
||||||
|
|
||||||
|
rvm:
|
||||||
|
- 2.1.1
|
||||||
|
- 1.9.3
|
||||||
|
- rbx-2.2.10
|
||||||
|
- jruby-19mode
|
||||||
|
|
||||||
|
env:
|
||||||
|
- GRAPE_VERSION=0.8.0
|
||||||
|
- GRAPE_VERSION=0.9.0
|
||||||
|
- GRAPE_VERSION=0.10.1
|
||||||
|
- GRAPE_VERSION=HEAD
|
||||||
7
Gemfile
7
Gemfile
|
|
@ -1,3 +1,10 @@
|
||||||
source 'https://rubygems.org'
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
gemspec
|
gemspec
|
||||||
|
|
||||||
|
case version = ENV['GRAPE_VERSION'] || '~> 0.10.0'
|
||||||
|
when 'HEAD'
|
||||||
|
gem 'grape', github: 'intridea/grape'
|
||||||
|
else
|
||||||
|
gem 'grape', version
|
||||||
|
end
|
||||||
|
|
|
||||||
|
|
@ -180,6 +180,10 @@ Enjoy :)
|
||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
|
#### Next
|
||||||
|
* Adds support for Grape 0.10.x
|
||||||
|
|
||||||
|
|
||||||
#### v1.2.1
|
#### v1.2.1
|
||||||
* Adds support for active model serializer 0.9.x
|
* Adds support for active model serializer 0.9.x
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ Gem::Specification.new do |gem|
|
||||||
gem.version = Grape::ActiveModelSerializers::VERSION
|
gem.version = Grape::ActiveModelSerializers::VERSION
|
||||||
gem.licenses = ['MIT']
|
gem.licenses = ['MIT']
|
||||||
|
|
||||||
gem.add_dependency "grape", "~> 0.3"
|
gem.add_dependency "grape"
|
||||||
gem.add_dependency "active_model_serializers", ">= 0.9.0"
|
gem.add_dependency "active_model_serializers", ">= 0.9.0"
|
||||||
|
|
||||||
gem.add_development_dependency "rspec"
|
gem.add_development_dependency "rspec"
|
||||||
|
|
|
||||||
|
|
@ -9,12 +9,20 @@ module Grape
|
||||||
attr_accessor :controller_name
|
attr_accessor :controller_name
|
||||||
|
|
||||||
def namespace_options
|
def namespace_options
|
||||||
|
if self.respond_to?(:inheritable_setting)
|
||||||
|
inheritable_setting.namespace
|
||||||
|
else
|
||||||
settings[:namespace] ? settings[:namespace].options : {}
|
settings[:namespace] ? settings[:namespace].options : {}
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def route_options
|
def route_options
|
||||||
|
if self.respond_to?(:inheritable_setting)
|
||||||
|
inheritable_setting.route
|
||||||
|
else
|
||||||
options[:route_options]
|
options[:route_options]
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def self.included(base)
|
def self.included(base)
|
||||||
mattr_accessor :_serialization_scope
|
mattr_accessor :_serialization_scope
|
||||||
|
|
@ -39,13 +47,9 @@ module Grape
|
||||||
private
|
private
|
||||||
|
|
||||||
def set_meta_and_meta_key(meta)
|
def set_meta_and_meta_key(meta)
|
||||||
if meta.has_key?(:meta)
|
|
||||||
Formatter::ActiveModelSerializers.meta = meta[:meta]
|
Formatter::ActiveModelSerializers.meta = meta[:meta]
|
||||||
if meta.has_key?(:meta_key)
|
|
||||||
Formatter::ActiveModelSerializers.meta_key = meta[:meta_key]
|
Formatter::ActiveModelSerializers.meta_key = meta[:meta_key]
|
||||||
end
|
end
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
end
|
||||||
Endpoint.send(:include, EndpointExtension)
|
Endpoint.send(:include, EndpointExtension)
|
||||||
|
|
|
||||||
|
|
@ -26,25 +26,19 @@ module Grape
|
||||||
|
|
||||||
def other_options
|
def other_options
|
||||||
options = {}
|
options = {}
|
||||||
if @meta_content_items
|
meta = Formatter::ActiveModelSerializers.meta.delete(:meta)
|
||||||
if @meta_key
|
meta_key = Formatter::ActiveModelSerializers.meta_key.delete(:meta_key)
|
||||||
key_option = @meta_key[:meta_key]
|
options[:meta_key] = meta_key if meta && meta_key
|
||||||
@meta_key.delete(:meta_key)
|
options[meta_key || :meta] = meta if meta
|
||||||
options[:meta_key] = key_option if key_option
|
|
||||||
end
|
|
||||||
meta_option = @meta_content_items[:meta]
|
|
||||||
@meta_content_items.delete(:meta)
|
|
||||||
options[key_option || :meta] = meta_option if meta_option
|
|
||||||
end
|
|
||||||
options
|
options
|
||||||
end
|
end
|
||||||
|
|
||||||
def meta
|
def meta
|
||||||
@meta_content_items || {}
|
@meta || {}
|
||||||
end
|
end
|
||||||
|
|
||||||
def meta=(meta_content)
|
def meta=(value)
|
||||||
@meta_content_items = { meta: meta_content } if meta_content
|
@meta = value ? { meta: value } : nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def meta_key
|
def meta_key
|
||||||
|
|
@ -52,7 +46,7 @@ module Grape
|
||||||
end
|
end
|
||||||
|
|
||||||
def meta_key=(key)
|
def meta_key=(key)
|
||||||
@meta_key = { meta_key: key } if key
|
@meta_key = key ? { meta_key: key } : nil
|
||||||
end
|
end
|
||||||
|
|
||||||
def build_options_from_endpoint(endpoint)
|
def build_options_from_endpoint(endpoint)
|
||||||
|
|
@ -62,10 +56,14 @@ module Grape
|
||||||
# array root is the innermost namespace name ('space') if there is one,
|
# array root is the innermost namespace name ('space') if there is one,
|
||||||
# otherwise the route name (e.g. get 'name')
|
# otherwise the route name (e.g. get 'name')
|
||||||
def default_root(endpoint)
|
def default_root(endpoint)
|
||||||
innermost_scope = endpoint.settings.peek
|
innermost_scope = if endpoint.respond_to?(:namespace_stackable)
|
||||||
|
endpoint.namespace_stackable(:namespace).last
|
||||||
|
else
|
||||||
|
endpoint.settings.peek[:namespace]
|
||||||
|
end
|
||||||
|
|
||||||
if innermost_scope[:namespace]
|
if innermost_scope
|
||||||
innermost_scope[:namespace].space
|
innermost_scope.space
|
||||||
else
|
else
|
||||||
endpoint.options[:path][0].to_s.split('/')[-1]
|
endpoint.options[:path][0].to_s.split('/')[-1]
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,11 @@ require 'spec_helper'
|
||||||
|
|
||||||
describe 'Grape::EndpointExtension' do
|
describe 'Grape::EndpointExtension' do
|
||||||
|
|
||||||
|
if Grape::Util.const_defined?('InheritableSetting')
|
||||||
|
subject { Grape::Endpoint.new(Grape::Util::InheritableSetting.new, {path: '/', method: 'foo'}) }
|
||||||
|
else
|
||||||
subject { Grape::Endpoint.new({}, {path: '/', method: 'foo'}) }
|
subject { Grape::Endpoint.new({}, {path: '/', method: 'foo'}) }
|
||||||
|
end
|
||||||
|
|
||||||
let(:serializer) { Grape::Formatter::ActiveModelSerializers }
|
let(:serializer) { Grape::Formatter::ActiveModelSerializers }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,13 @@ describe Grape::Formatter::ActiveModelSerializers do
|
||||||
|
|
||||||
describe '.fetch_serializer' do
|
describe '.fetch_serializer' do
|
||||||
let(:user) { User.new(first_name: 'John') }
|
let(:user) { User.new(first_name: 'John') }
|
||||||
|
|
||||||
|
if Grape::Util.const_defined?('InheritableSetting')
|
||||||
|
let(:endpoint) { Grape::Endpoint.new(Grape::Util::InheritableSetting.new, {path: '/', method: 'foo'}) }
|
||||||
|
else
|
||||||
let(:endpoint) { Grape::Endpoint.new({}, {path: '/', method: 'foo'}) }
|
let(:endpoint) { Grape::Endpoint.new({}, {path: '/', method: 'foo'}) }
|
||||||
|
end
|
||||||
|
|
||||||
let(:env) { { 'api.endpoint' => endpoint } }
|
let(:env) { { 'api.endpoint' => endpoint } }
|
||||||
|
|
||||||
before do
|
before do
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue