Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 25 additions & 29 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,47 +14,43 @@ jobs:
fail-fast: false
matrix:
include:
# Recent Rubies and Rails
# NOTE(BF): Rails >= 5.0 has test failures which need to be fixed
# - ruby-version: '2.6'
# rails-version: '6.1'
# - ruby-version: '2.7'
# rails-version: '6.0'
# - ruby-version: '2.6'
# rails-version: '5.2'
# - ruby-version: '2.5'
# rails-version: '5.1'
# bundler: '1'
# - ruby-version: '2.4'
# rails-version: '5.0'
# bundler: '1'
- ruby-version: '2.4'
rails-version: '4.2'
bundler: '1'
- ruby-version: '2.4'
rails-version: '4.1'
bundler: '1'
- ruby-version: '2.4'
rails-version: '4.0'
bundler: '1'
- ruby-version: '2.7'
rails-version: '5.0'
- ruby-version: '2.7'
rails-version: '5.1'
- ruby-version: '2.7'
rails-version: '5.2'
- ruby-version: '3.0'
rails-version: '6.0'
- ruby-version: '3.1'
rails-version: '6.1'
- ruby-version: '3.2'
rails-version: '7.0'
- ruby-version: '3.3'
rails-version: '7.1'
- ruby-version: '3.3'
rails-version: '7.2'
- ruby-version: '3.4'
rails-version: '8.0'
- ruby-version: '4.0'
rails-version: '8.1'

continue-on-error: "${{ endsWith(matrix.ruby-version, 'head') }}"

env:
CI: "1"

steps:
- name: "Checkout Code"
uses: "actions/checkout@v2"
timeout-minutes: 5
- name: "Checkout Code"
uses: "actions/checkout@v2"
timeout-minutes: 5
with:
fetch-depth: 0
fetch-depth: 0

- name: "Build Ruby"
uses: ruby/setup-ruby@v1
with:
ruby-version: "${{ matrix.ruby-version }}"
bundler: "${{ matrix.bundler || 2 }}"
ruby-version: "${{ matrix.ruby-version }}"
bundler-cache: true
env:
RAILS_VERSION: ${{ matrix.rails-version }}
Expand Down
35 changes: 0 additions & 35 deletions .travis.yml

This file was deleted.

35 changes: 5 additions & 30 deletions Gemfile
Original file line number Diff line number Diff line change
@@ -1,40 +1,15 @@
source 'https://rubygems.org'

version = ENV['RAILS_VERSION'] || '4.1'

version = ENV['RAILS_VERSION']
if version == 'master'
gem 'rack', github: 'rack/rack'
gem 'arel', github: 'rails/arel'
gem 'rails', github: 'rails/rails'
git 'https://github.com/rails/rails.git' do
gem 'railties'
gem 'activesupport'
gem 'activemodel'
gem 'actionpack'
gem 'activerecord', group: :test
# Rails 5
gem 'actionview'
end
else
elsif version
gem_version = "~> #{version}.0"
gem 'rails', gem_version
gem 'railties', gem_version
gem 'activesupport', gem_version
gem 'activemodel', gem_version
gem 'actionpack', gem_version
gem 'activerecord', gem_version, group: :test
else
gem 'rails'
end

# Specify gem dependencies in active_model_serializers.gemspec
gemspec

# https://github.com/bundler/bundler/blob/89a8778c19269561926cea172acdcda241d26d23/lib/bundler/dependency.rb#L30-L54
@windows_platforms = [:mswin, :mswin64, :mingw, :x64_mingw]

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: (@windows_platforms + [:jruby])

# JRuby versions before 9.x report their version as "1.9.x" or lower, so lock these to an older version of mime-types
if defined?(JRUBY_VERSION) and Gem::ruby_version < Gem::Version.new("2.0.0")
gem 'mime-types', '< 3'
end
gem 'tzinfo-data', platforms: %i[mswin mswin64 mingw x64_mingw jruby]
5 changes: 3 additions & 2 deletions active_model_serializers.gemspec
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,10 @@ Gem::Specification.new do |gem|
gem.name = "active_model_serializers"
gem.require_paths = ["lib"]
gem.version = ActiveModel::Serializer::VERSION
gem.required_ruby_version = '>= 2.7'

gem.add_dependency 'activemodel', '>= 3.0'
gem.add_development_dependency "rails", ">= 3.0"
gem.add_dependency 'activemodel', '>= 6.0'
gem.add_development_dependency "rails", ">= 6.0"
gem.add_development_dependency "pry"
gem.add_development_dependency "minitest"
end
2 changes: 2 additions & 0 deletions bench/perf.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require "rubygems"
require "bundler/setup"
require "active_model_serializers"
Expand Down
2 changes: 2 additions & 0 deletions lib/action_controller/serialization.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module ActionController
# Action Controller Serialization
#
Expand Down
2 changes: 2 additions & 0 deletions lib/active_model/array_serializer.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require "active_support/core_ext/class/attribute"
require 'active_support/dependencies'
require 'active_support/descendants_tracker'
Expand Down
4 changes: 3 additions & 1 deletion lib/active_model/serializer.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require "active_support/core_ext/class/attribute"
require "active_support/core_ext/module/anonymous"
require 'active_support/dependencies'
Expand Down Expand Up @@ -455,7 +457,7 @@ def merge_association(hash, key, serializables, unique_values)
def attributes
_fast_attributes
rescue NameError
method = "def _fast_attributes\n"
method = +"def _fast_attributes\n"

method << " h = {}\n"

Expand Down
2 changes: 2 additions & 0 deletions lib/active_model/serializer/associations.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module ActiveModel
class Serializer
module Associations #:nodoc:
Expand Down
4 changes: 3 additions & 1 deletion lib/active_model/serializers/version.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# frozen_string_literal: true

module ActiveModel
class Serializer
VERSION = "0.8.4"
VERSION = "0.8.5"
end
end
2 changes: 2 additions & 0 deletions lib/active_model_serializers.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require "active_support"
require "active_support/core_ext/string/inflections"
require "active_support/notifications"
Expand Down
2 changes: 2 additions & 0 deletions lib/active_record/serializer_override.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

# We do not recommend that you use AM::S in this way, but if you must, here
# is a mixin that overrides ActiveRecord::Base#to_json and #as_json.

Expand Down
2 changes: 2 additions & 0 deletions lib/generators/resource_override.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require "rails/generators"
require "rails/generators/rails/resource/resource_generator"

Expand Down
2 changes: 2 additions & 0 deletions lib/generators/serializer/serializer_generator.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

module Rails
module Generators
class SerializerGenerator < NamedBase
Expand Down
2 changes: 2 additions & 0 deletions lib/generators/serializer/templates/serializer.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

<% module_namespacing do -%>
class <%= class_name %>Serializer < <%= parent_class_name %>
attributes <%= attributes_names.map(&:inspect).join(", ") %>
Expand Down
3 changes: 3 additions & 0 deletions test/array_serializer_test.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require "test_helper"
require "test_fakes"

Expand All @@ -17,6 +19,7 @@ def test_array_items_do_not_have_root
each_serializer = array.active_model_serializer.new(array, :root => "root", :each_serializer => BasicSerializer)

default_json = default_serializer.as_json
default_json['root'].map!(&:symbolize_keys)
each_json = each_serializer.as_json

assert_equal(expected, default_json)
Expand Down
40 changes: 18 additions & 22 deletions test/association_test.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require "test_helper"

class AssociationTest < ActiveSupport::TestCase
Expand Down Expand Up @@ -367,11 +369,9 @@ def test_embed_ids_include_true_does_not_serialize_multiple_times

# Count how often the @comment record is serialized.
serialized_times = 0
@comment.class_eval do
define_method :read_attribute_for_serialization, lambda { |name|
serialized_times += 1 if name == :body
super(name)
}
@comment.define_singleton_method(:read_attribute_for_serialization) do |name|
serialized_times += 1 if name == :body
super(name)
end

include_bare! :comment
Expand All @@ -386,14 +386,12 @@ def test_include_with_read_association_id_for_serialization_hook
end

association_name = nil
@post.class_eval do
define_method :read_attribute_for_serialization, lambda { |name|
association_name = name
send(name)
}
define_method :comment_id, lambda {
@attributes[:comment].id
}
@post.define_singleton_method(:read_attribute_for_serialization) do |name|
association_name = name
send(name)
end
@post.define_singleton_method(:comment_id) do
@attributes[:comment].id
end

include_bare! :comment
Expand All @@ -409,14 +407,12 @@ def test_include_with_read_association_ids_for_serialization_hook
end

association_name = nil
@post.class_eval do
define_method :read_attribute_for_serialization, lambda { |name|
association_name = name
send(name)
}
define_method :comment_ids, lambda {
@attributes[:comments].map(&:id)
}
@post.define_singleton_method(:read_attribute_for_serialization) do |name|
association_name = name
send(name)
end
@post.define_singleton_method(:comment_ids) do
@attributes[:comments].map(&:id)
end

include_bare! :comments
Expand Down Expand Up @@ -478,7 +474,7 @@ def test_mutual_relation_result
end

def test_mutual_relation_does_not_raise_error
assert_nothing_raised SystemStackError, 'stack level too deep' do
assert_nothing_raised do # no SystemStackError
@serializer.as_json
end
end
Expand Down
2 changes: 2 additions & 0 deletions test/caching_test.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require "test_helper"

class CachingTest < ActiveSupport::TestCase
Expand Down
2 changes: 2 additions & 0 deletions test/generators_test.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require 'test_helper'

class Foo < Rails::Application
Expand Down
2 changes: 2 additions & 0 deletions test/no_serialization_scope_test.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require "test_helper"

class NoSerializationScopeTest < ActionController::TestCase
Expand Down
2 changes: 2 additions & 0 deletions test/serialization_scope_name_test.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# frozen_string_literal: true

require 'test_helper'
require 'pathname'

Expand Down
Loading
Loading