acts_as_serializable 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.3.0
@@ -3,6 +3,11 @@ require 'active_support'
3
3
  require 'find'
4
4
  require 'serializable/version'
5
5
 
6
+ def using_rails_3?
7
+ # Assume 3 unless we have 2.
8
+ defined?(Rails) && Rails::VERSION::MAJOR != 2
9
+ end
10
+
6
11
  module Serializable
7
12
  SERIALIZE_TO_VERSION_REGEXP = /^serialize_to_version_((:?\d+_?)+)$/
8
13
  SERIALIZED_CLASS_NAME_REGEXP = /\/version_((:?\d+_?)+)\.rb$/
@@ -15,6 +20,8 @@ module Serializable
15
20
  if defined?(RAILS_ROOT)
16
21
  # Rails plugin usage
17
22
  project_paths = Array.new
23
+ # The app directory itself is not in $LOAD_PATH in Rails 3
24
+ project_paths << Rails.root.join('app') if defined?(Rails) && File.exists?(Rails.root.join('app'))
18
25
  $LOAD_PATH.each do |path|
19
26
  if path.match(/#{Regexp.escape(RAILS_ROOT)}.*\/app$/)
20
27
  project_paths << path
@@ -1,6 +1,8 @@
1
1
  module Serializable
2
- class XBuilder < ::ActionView::TemplateHandler
3
- include ActionView::TemplateHandlers::Compilable
2
+ xbuilder_parent = using_rails_3? ? Object : ::ActionView::TemplateHandler
3
+
4
+ class XBuilder < xbuilder_parent
5
+ include ActionView::TemplateHandlers::Compilable unless using_rails_3?
4
6
 
5
7
  def compile(template)
6
8
  compiled_code = <<-CODE
@@ -21,6 +23,7 @@ module Serializable
21
23
  compiled_code
22
24
  end
23
25
 
26
+ alias_method :call, :compile
24
27
  end
25
28
  end
26
29
 
@@ -1,4 +1,4 @@
1
- require 'spec/spec_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  class SerializableObject
4
4
  include Serializable
@@ -3,6 +3,15 @@ require 'rubygems'
3
3
  ::RAILS_ROOT = File.join(File.dirname(__FILE__))
4
4
  $LOAD_PATH.push(File.join(::RAILS_ROOT, 'app'))
5
5
 
6
- require 'lib/serializable/version'
7
- require 'lib/serializable/versions'
8
- require 'lib/acts_as_serializable'
6
+ require 'serializable/version'
7
+ require 'serializable/versions'
8
+ require 'acts_as_serializable'
9
+
10
+ def silence_warnings
11
+ begin
12
+ old_verbose, $VERBOSE = $VERBOSE, nil
13
+ yield
14
+ ensure
15
+ $VERBOSE = old_verbose
16
+ end
17
+ end
@@ -1,4 +1,4 @@
1
- require 'spec/spec_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe Serializable::Version, 'when created with a version numeric string' do
4
4
 
@@ -1,4 +1,4 @@
1
- require 'spec/spec_helper'
1
+ require 'spec_helper'
2
2
 
3
3
  describe Serializable::Versions do
4
4
 
@@ -0,0 +1,61 @@
1
+ require 'spec_helper'
2
+
3
+ module ActionView
4
+ class TemplateHandler
5
+ end
6
+
7
+ module TemplateHandlers
8
+ module Compilable
9
+ end
10
+ end
11
+
12
+ class Template
13
+ def self.register_template_handler(*args)
14
+ end
15
+ end
16
+ end
17
+
18
+ module Rails
19
+ module VERSION
20
+ def self.set(val)
21
+ silence_warnings do
22
+ const_set(:MAJOR, val)
23
+ end
24
+ end
25
+ end
26
+ end
27
+
28
+ def set_rails(version)
29
+ Rails::VERSION.set(version)
30
+ if defined?(Serializable::XBuilder)
31
+ Serializable.send(:remove_const, "XBuilder")
32
+ xbuilder_path = $".detect { |lib| lib =~ /xbuilder/ }
33
+ $".delete(xbuilder_path)
34
+ end
35
+ require 'serializable/xbuilder'
36
+ end
37
+
38
+ describe "XBuilder", 'when in Rails' do
39
+ context 'and Rails is version 2' do
40
+ it 'should inherit from ActionView::TemplateHandler' do
41
+ set_rails(2)
42
+ Serializable::XBuilder.ancestors.include?(ActionView::TemplateHandler).should be_true
43
+ end
44
+ it 'should include Compilable' do
45
+ set_rails(2)
46
+ Serializable::XBuilder.ancestors.include?(ActionView::TemplateHandlers::Compilable).should be_true
47
+ end
48
+ end
49
+
50
+ context 'and Rails is version 3' do
51
+ it 'should not inherit from ActionView::TemplateHandler' do
52
+ set_rails(3)
53
+ Serializable::XBuilder.ancestors.include?(ActionView::TemplateHandler).should be_false
54
+ end
55
+
56
+ it 'should not include Compilable' do
57
+ set_rails(3)
58
+ Serializable::XBuilder.ancestors.include?(ActionView::TemplateHandlers::Compilable).should be_false
59
+ end
60
+ end
61
+ end
metadata CHANGED
@@ -1,83 +1,74 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: acts_as_serializable
3
- version: !ruby/object:Gem::Version
4
- hash: 21
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 2
9
- - 1
10
- version: 0.2.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Birkir A. Barkarson
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-09-21 00:00:00 +09:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2012-11-15 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
22
15
  name: builder
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
25
17
  none: false
26
- requirements:
18
+ requirements:
27
19
  - - <=
28
- - !ruby/object:Gem::Version
29
- hash: 15
30
- segments:
31
- - 2
32
- - 1
33
- - 2
20
+ - !ruby/object:Gem::Version
34
21
  version: 2.1.2
35
22
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: jsonbuilder
39
23
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - <=
28
+ - !ruby/object:Gem::Version
29
+ version: 2.1.2
30
+ - !ruby/object:Gem::Dependency
31
+ name: jsonbuilder
32
+ requirement: !ruby/object:Gem::Requirement
41
33
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 27
46
- segments:
47
- - 0
48
- - 1
49
- - 0
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
50
37
  version: 0.1.0
51
38
  type: :runtime
52
- version_requirements: *id002
53
- - !ruby/object:Gem::Dependency
54
- name: activesupport
55
39
  prerelease: false
56
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.1.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: activesupport
48
+ requirement: !ruby/object:Gem::Requirement
57
49
  none: false
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- hash: 11
62
- segments:
63
- - 1
64
- - 2
65
- version: "1.2"
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '1.2'
66
54
  type: :runtime
67
- version_requirements: *id003
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '1.2'
68
62
  description: Easy versioning of serialization methods
69
63
  email: birkirb@stoicviking.net
70
64
  executables: []
71
-
72
65
  extensions: []
73
-
74
- extra_rdoc_files:
66
+ extra_rdoc_files:
75
67
  - README.rdoc
76
- files:
68
+ files:
77
69
  - README.rdoc
78
70
  - Rakefile
79
71
  - VERSION
80
- - acts_as_serializable.gemspec
81
72
  - init.rb
82
73
  - lib/acts_as_serializable.rb
83
74
  - lib/serializable/version.rb
@@ -93,39 +84,29 @@ files:
93
84
  - spec/spec_helper.rb
94
85
  - spec/version_spec.rb
95
86
  - spec/versions_spec.rb
96
- has_rdoc: true
87
+ - spec/xbuilder_spec.rb
97
88
  homepage: http://github.com/birkirb/acts_as_serializable
98
89
  licenses: []
99
-
100
90
  post_install_message:
101
91
  rdoc_options: []
102
-
103
- require_paths:
92
+ require_paths:
104
93
  - lib
105
- required_ruby_version: !ruby/object:Gem::Requirement
94
+ required_ruby_version: !ruby/object:Gem::Requirement
106
95
  none: false
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- hash: 3
111
- segments:
112
- - 0
113
- version: "0"
114
- required_rubygems_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ required_rubygems_version: !ruby/object:Gem::Requirement
115
101
  none: false
116
- requirements:
117
- - - ">="
118
- - !ruby/object:Gem::Version
119
- hash: 3
120
- segments:
121
- - 0
122
- version: "0"
102
+ requirements:
103
+ - - ! '>='
104
+ - !ruby/object:Gem::Version
105
+ version: '0'
123
106
  requirements: []
124
-
125
107
  rubyforge_project: serializable
126
- rubygems_version: 1.3.7
108
+ rubygems_version: 1.8.23
127
109
  signing_key:
128
110
  specification_version: 3
129
111
  summary: Easy versioning of serialization methods
130
112
  test_files: []
131
-
@@ -1,64 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{acts_as_serializable}
8
- s.version = "0.2.1"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Birkir A. Barkarson"]
12
- s.date = %q{2011-09-21}
13
- s.description = %q{Easy versioning of serialization methods}
14
- s.email = %q{birkirb@stoicviking.net}
15
- s.extra_rdoc_files = [
16
- "README.rdoc"
17
- ]
18
- s.files = [
19
- "README.rdoc",
20
- "Rakefile",
21
- "VERSION",
22
- "acts_as_serializable.gemspec",
23
- "init.rb",
24
- "lib/acts_as_serializable.rb",
25
- "lib/serializable/version.rb",
26
- "lib/serializable/versions.rb",
27
- "lib/serializable/xbuilder.rb",
28
- "spec/acts_as_serializable_spec.rb",
29
- "spec/app/serializations/test_rails_model/version_1_0_0.rb",
30
- "spec/app/serializations/test_rails_model/version_1_5.rb",
31
- "spec/app/serializations/test_rails_model/version_2_1.rb",
32
- "spec/serializations/test_model/version_1_0_0.rb",
33
- "spec/serializations/test_model/version_1_5.rb",
34
- "spec/serializations/test_model/version_2_1.rb",
35
- "spec/spec_helper.rb",
36
- "spec/version_spec.rb",
37
- "spec/versions_spec.rb"
38
- ]
39
- s.homepage = %q{http://github.com/birkirb/acts_as_serializable}
40
- s.require_paths = ["lib"]
41
- s.rubyforge_project = %q{serializable}
42
- s.rubygems_version = %q{1.3.7}
43
- s.summary = %q{Easy versioning of serialization methods}
44
-
45
- if s.respond_to? :specification_version then
46
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
47
- s.specification_version = 3
48
-
49
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
50
- s.add_runtime_dependency(%q<builder>, ["<= 2.1.2"])
51
- s.add_runtime_dependency(%q<jsonbuilder>, [">= 0.1.0"])
52
- s.add_runtime_dependency(%q<activesupport>, [">= 1.2"])
53
- else
54
- s.add_dependency(%q<builder>, ["<= 2.1.2"])
55
- s.add_dependency(%q<jsonbuilder>, [">= 0.1.0"])
56
- s.add_dependency(%q<activesupport>, [">= 1.2"])
57
- end
58
- else
59
- s.add_dependency(%q<builder>, ["<= 2.1.2"])
60
- s.add_dependency(%q<jsonbuilder>, [">= 0.1.0"])
61
- s.add_dependency(%q<activesupport>, [">= 1.2"])
62
- end
63
- end
64
-