serialist 1.3.2 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.3.2
1
+ 1.4.0
@@ -15,7 +15,21 @@ module Serialist
15
15
  serialize(@serialist_field, Hash)
16
16
 
17
17
  if serialist_options.empty?
18
+ # catch-all mode
18
19
  include Serialist::InstanceMethods
20
+ class_eval do
21
+ # alias method chaining
22
+ unless method_defined? :method_missing
23
+ def method_missing(meth, *args, &block); super; end
24
+ end
25
+ alias_method :old_method_missing, :method_missing
26
+ alias_method :method_missing, :serialist_method_missing
27
+ unless method_defined?(:attributes=)
28
+ def attributes=(meth, *args, &block); super; end
29
+ end
30
+ alias_method :old_attributes=, :attributes=
31
+ alias_method :attributes=, :serialist_attributes=
32
+ end
19
33
  else
20
34
  @serialist_options.each do |field|
21
35
  cols = self.columns.map{|c|c.name.to_s}
@@ -60,7 +74,9 @@ module Serialist
60
74
  end
61
75
 
62
76
  module InstanceMethods
63
- def attributes=(new_attributes, guard_protected_attributes = true)
77
+
78
+ # needed because AR checks with respond_to when doing mass assignment.
79
+ def serialist_attributes=(new_attributes, guard_protected_attributes = true)
64
80
  return if new_attributes.nil?
65
81
  attributes = new_attributes.dup
66
82
  attributes.stringify_keys!
@@ -70,11 +86,10 @@ module Serialist
70
86
  self.class.define_access_method(k) unless respond_to?(k) # for validation
71
87
  end
72
88
  end
73
- super
89
+ self.send(:old_attributes=, new_attributes, guard_protected_attributes = true)
74
90
  end
75
91
 
76
- alias :old_method_missing :method_missing
77
- def method_missing(method, *args, &block)
92
+ def serialist_method_missing(method, *args, &block)
78
93
  begin
79
94
  old_method_missing(method, *args, &block)
80
95
  rescue NoMethodError
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{serialist}
8
- s.version = "1.3.2"
8
+ s.version = "1.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Benoit B\303\251n\303\251zech"]
12
- s.date = %q{2010-02-22}
12
+ s.date = %q{2010-02-23}
13
13
  s.description = %q{Serialize any data, set and fetch it like any column attributes}
14
14
  s.email = %q{benoit.benezech@gmail.com}
15
15
  s.extra_rdoc_files = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: serialist
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Benoit B\xC3\xA9n\xC3\xA9zech"
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-02-22 00:00:00 +01:00
12
+ date: 2010-02-23 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies: []
15
15