Skip to content

Instantly share code, notes, and snippets.

@skalee
Created April 29, 2015 14:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save skalee/a4f25e62093dcfe863dc to your computer and use it in GitHub Desktop.
Save skalee/a4f25e62093dcfe863dc to your computer and use it in GitHub Desktop.
Possible AMS 0.10 bug
source "https://rubygems.org"
gem "active_model_serializers", github: "rails-api/active_model_serializers"
$ ruby src.rb
//////////////
{:name=>"sebastian"}
//////////////
/Users/skale/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/bundler/gems/active_model_serializers-fc6276cab836/lib/active_model/serializer.rb:193:in `dup': can't dup NilClass (TypeError)
from /Users/skale/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/bundler/gems/active_model_serializers-fc6276cab836/lib/active_model/serializer.rb:193:in `attributes'
from /Users/skale/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/bundler/gems/active_model_serializers-fc6276cab836/lib/active_model/serializer/adapter/json.rb:14:in `block in serializable_hash'
from /Users/skale/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/bundler/gems/active_model_serializers-fc6276cab836/lib/active_model/serializer/adapter.rb:53:in `cache_check'
from /Users/skale/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/bundler/gems/active_model_serializers-fc6276cab836/lib/active_model/serializer/adapter/json.rb:13:in `serializable_hash'
from /Users/skale/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0/bundler/gems/active_model_serializers-fc6276cab836/lib/active_model/serializer/adapter.rb:23:in `as_json'
from src.rb:19:in `render_json'
from src.rb:42:in `<main>'
require 'bundler/setup'
require 'active_model_serializers'
require 'json'
def model *attribute_names
Struct.new(*attribute_names) do
# include ActiveModel::Model
include ActiveModel::Serialization
def attributes
to_h
end
end
end
def render_json serializer
puts ActiveModel::Serializer::Adapter::Json.new(serializer).as_json
end
# CLASSES
User = model :name, :age
class UserSerializer < ActiveModel::Serializer
attribute :name
end
# INSTANCES
someone = User.new "sebastian", 30
# TEST
puts "//////////////"
render_json UserSerializer.new(someone)
puts "//////////////"
render_json ActiveModel::Serializer.new(someone) # exception
puts "//////////////"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment