Class: VersionSerializer::Versioner
- Inherits:
-
Object
- Object
- VersionSerializer::Versioner
- Defined in:
- lib/version_serializers/versioner.rb
Instance Attribute Summary collapse
-
#class_name ⇒ Object
Returns the value of attribute class_name.
-
#request_version ⇒ Object
Returns the value of attribute request_version.
Class Method Summary collapse
- .get_rendering_opts(resource, version, namespace = nil) ⇒ Object
- .get_serializer(name, version) ⇒ Object
Instance Method Summary collapse
Instance Attribute Details
#class_name ⇒ Object
Returns the value of attribute class_name.
4 5 6 |
# File 'lib/version_serializers/versioner.rb', line 4 def class_name @class_name end |
#request_version ⇒ Object
Returns the value of attribute request_version.
4 5 6 |
# File 'lib/version_serializers/versioner.rb', line 4 def request_version @request_version end |
Class Method Details
.get_rendering_opts(resource, version, namespace = nil) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/version_serializers/versioner.rb', line 10 def self.get_rendering_opts(resource, version, namespace=nil) resource_class_name = resource.class.to_s serializer_key = :serializer if resource.is_a? Enumerable serializer_key = :each_serializer if resource.is_a? ActiveRecord::Relation resource_class_name = resource_class_name.split("::").tap(&:pop).join("::") else return { json: resource } if resource.empty? resource_class_name = resource.first.class.to_s end end resource_class_name.prepend("#{namespace}/") if namespace serializer_class = get_serializer(resource_class_name, version) { json: resource, serializer_key => serializer_class } end |
.get_serializer(name, version) ⇒ Object
6 7 8 |
# File 'lib/version_serializers/versioner.rb', line 6 def self.get_serializer(name, version) send(:new, version, "#{name}_serializer".classify).get end |
Instance Method Details
#get ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/version_serializers/versioner.rb', line 27 def get "V#{request_version}::#{class_name}".constantize rescue NameError previous_version = request_version.to_i - 1 if previous_version == 0 raise NameError else self.class.new(previous_version, class_name).get end end |