From 4c6a182b1d457ebc47dd50e19be68df99eeac17a Mon Sep 17 00:00:00 2001 From: Andrew Haines Date: Tue, 12 Feb 2013 18:35:32 +0000 Subject: [PATCH] Allow serialization of CollectionDecorators with ActiveModel::Serializers Closes #471 --- draper.gemspec | 5 +++-- lib/draper/railtie.rb | 6 ++++++ spec/dummy/config/application.rb | 1 + .../spec/decorators/active_model_serializers_spec.rb | 11 +++++++++++ 4 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 spec/dummy/spec/decorators/active_model_serializers_spec.rb diff --git a/draper.gemspec b/draper.gemspec index 79256a9..3e4d46d 100644 --- a/draper.gemspec +++ b/draper.gemspec @@ -10,7 +10,8 @@ Gem::Specification.new do |s| s.homepage = "http://github.com/drapergem/draper" s.summary = "View Models for Rails" s.description = "Draper adds an object-oriented layer of presentation logic to your Rails apps." - s.rubyforge_project = "draper" + s.license = "MIT" + s.files = `git ls-files`.split("\n") s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n") s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) } @@ -27,5 +28,5 @@ Gem::Specification.new do |s| s.add_development_dependency 'rspec-rails', '~> 2.12' s.add_development_dependency 'minitest-rails', '~> 0.2' s.add_development_dependency 'capybara' - s.license = "MIT" + s.add_development_dependency 'active_model_serializers' end diff --git a/lib/draper/railtie.rb b/lib/draper/railtie.rb index f10523c..139b328 100755 --- a/lib/draper/railtie.rb +++ b/lib/draper/railtie.rb @@ -44,6 +44,12 @@ module Draper end end + initializer "draper.setup_active_model_serializers" do |app| + ActiveSupport.on_load :active_model_serializers do + Draper::CollectionDecorator.send :include, ActiveModel::ArraySerializerSupport + end + end + console do require 'action_controller/test_case' ApplicationController.new.view_context diff --git a/spec/dummy/config/application.rb b/spec/dummy/config/application.rb index 2272302..d7452d9 100644 --- a/spec/dummy/config/application.rb +++ b/spec/dummy/config/application.rb @@ -9,6 +9,7 @@ require 'rails/all' require 'draper' attempt_require 'mongoid' attempt_require 'devise' +require 'active_model_serializers' module Dummy class Application < Rails::Application diff --git a/spec/dummy/spec/decorators/active_model_serializers_spec.rb b/spec/dummy/spec/decorators/active_model_serializers_spec.rb new file mode 100644 index 0000000..95bdda9 --- /dev/null +++ b/spec/dummy/spec/decorators/active_model_serializers_spec.rb @@ -0,0 +1,11 @@ +require 'spec_helper' + +describe Draper::CollectionDecorator do + describe "#active_model_serializer" do + it "returns ActiveModel::ArraySerializer" do + collection_decorator = Draper::CollectionDecorator.new([]) + + expect(collection_decorator.active_model_serializer).to be ActiveModel::ArraySerializer + end + end +end