ohm-contrib 0.1.1 → 0.1.2

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.
@@ -1,6 +1,6 @@
1
1
  module Ohm
2
2
  module Contrib
3
- VERSION = "0.1.1"
3
+ VERSION = "0.1.2"
4
4
  end
5
5
 
6
6
  autoload :ActiveModelExtension, "ohm/contrib/active_model_extension"
@@ -18,4 +18,4 @@ module Ohm
18
18
  autoload :Scope, "ohm/contrib/scope"
19
19
  autoload :SoftDelete, "ohm/contrib/soft_delete"
20
20
  autoload :FulltextSearching, "ohm/contrib/fulltext_searching"
21
- end
21
+ end
@@ -55,7 +55,6 @@ module Ohm
55
55
  module Callbacks
56
56
  def self.included(base)
57
57
  base.extend Macros
58
- base.extend Overrides
59
58
  end
60
59
 
61
60
  module Macros
@@ -127,18 +126,6 @@ module Ohm
127
126
  end
128
127
  end
129
128
 
130
- # This module is for class method overrides. As of now
131
- # it only overrides Ohm::Model::create to force calling save
132
- # instead of calling create so that Model.create will call
133
- # not only before/after :create but also before/after :save
134
- module Overrides
135
- def create(*args)
136
- model = new(*args)
137
- model.save
138
- model
139
- end
140
- end
141
-
142
129
  # Overrides the validate method of Ohm::Model. This is a bit tricky,
143
130
  # since typically you override this. Make sure you do something like:
144
131
  #
@@ -165,10 +152,20 @@ module Ohm
165
152
  # If the create succeeds, all after :create callbacks are
166
153
  # executed.
167
154
  def create
168
- execute_callback(:before, :create) if valid?
155
+ return unless valid?
156
+
157
+ execute_callback(:before, :create)
158
+ execute_callback(:before, :save)
159
+
160
+ initialize_id
169
161
 
170
- super.tap do |is_created|
171
- execute_callback(:after, :create) if is_created
162
+ mutex do
163
+ create_model_membership
164
+ write
165
+ add_to_indices
166
+
167
+ execute_callback(:after, :create)
168
+ execute_callback(:after, :save)
172
169
  end
173
170
  end
174
171
 
@@ -178,18 +175,18 @@ module Ohm
178
175
  # If the save also succeeds, all after :save callbacks are
179
176
  # executed.
180
177
  def save
181
- existing = !new?
178
+ return create if new?
179
+ return unless valid?
182
180
 
183
- if valid?
184
- execute_callback(:before, :save)
185
- execute_callback(:before, :update) if existing
186
- end
181
+ execute_callback(:before, :save)
182
+ execute_callback(:before, :update)
187
183
 
188
- super.tap do |is_saved|
189
- if is_saved
190
- execute_callback(:after, :save)
191
- execute_callback(:after, :update) if existing
192
- end
184
+ mutex do
185
+ write
186
+ update_indices
187
+
188
+ execute_callback(:after, :save)
189
+ execute_callback(:after, :update)
193
190
  end
194
191
  end
195
192
 
@@ -222,5 +219,4 @@ module Ohm
222
219
  __send__("#{ position }_#{ method }")
223
220
  end
224
221
  end
225
- end
226
-
222
+ end
@@ -2,18 +2,7 @@ require 'bigdecimal'
2
2
  require 'time'
3
3
  require 'date'
4
4
  require 'forwardable'
5
-
6
- begin
7
- require "yajl/json_gem"
8
- rescue LoadError
9
- $stderr.puts(
10
- "WARNING: Currently using the `json` gem. You might encounter encoding " +
11
- "problems with `Ohm::Types::Hash` and `Ohm::Types::Array`. Best to use " +
12
- "the `yajl-ruby` gem to avoid problems and also for performance reasons."
13
- )
14
-
15
- require "json"
16
- end
5
+ require "json"
17
6
 
18
7
  module Ohm
19
8
  # Provides all the primitive types. The following are included:
@@ -113,7 +113,7 @@ test "ascii 8bit encoding" do
113
113
 
114
114
  data = File.read(txt, :encoding => "ascii-8bit")
115
115
 
116
- post = Post.create(:address => { "address1" => data })
116
+ post = Post.create(:address => { "address1" => data.force_encoding("UTF-8") })
117
117
  post = Post[post.id]
118
118
 
119
119
  assert_equal post.address["address1"], data.force_encoding("UTF-8")
metadata CHANGED
@@ -1,82 +1,78 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: ohm-contrib
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.2
4
5
  prerelease:
5
- version: 0.1.1
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Cyril David
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-02-09 00:00:00 +08:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
12
+ date: 2011-11-21 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
17
15
  name: ohm
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &2164476460 !ruby/object:Gem::Requirement
20
17
  none: false
21
- requirements:
22
- - - ">="
23
- - !ruby/object:Gem::Version
24
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
25
22
  type: :runtime
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
28
- name: cutest
29
23
  prerelease: false
30
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *2164476460
25
+ - !ruby/object:Gem::Dependency
26
+ name: cutest
27
+ requirement: &2164475860 !ruby/object:Gem::Requirement
31
28
  none: false
32
- requirements:
33
- - - ">="
34
- - !ruby/object:Gem::Version
35
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
36
33
  type: :development
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
39
- name: redis
40
34
  prerelease: false
41
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *2164475860
36
+ - !ruby/object:Gem::Dependency
37
+ name: redis
38
+ requirement: &2164474640 !ruby/object:Gem::Requirement
42
39
  none: false
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
47
44
  type: :development
48
- version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
50
- name: lunar
51
45
  prerelease: false
52
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *2164474640
47
+ - !ruby/object:Gem::Dependency
48
+ name: lunar
49
+ requirement: &2164474060 !ruby/object:Gem::Requirement
53
50
  none: false
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- version: "0"
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
58
55
  type: :development
59
- version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
61
- name: override
62
56
  prerelease: false
63
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *2164474060
58
+ - !ruby/object:Gem::Dependency
59
+ name: override
60
+ requirement: &2164473440 !ruby/object:Gem::Requirement
64
61
  none: false
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: "0"
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
69
66
  type: :development
70
- version_requirements: *id005
71
- description: Includes a couple of core functions such as callbacks, timestamping, typecasting and lots of generic validation routines.
67
+ prerelease: false
68
+ version_requirements: *2164473440
69
+ description: Includes a couple of core functions such as callbacks, timestamping,
70
+ typecasting and lots of generic validation routines.
72
71
  email: cyx.ucron@gmail.com
73
72
  executables: []
74
-
75
73
  extensions: []
76
-
77
74
  extra_rdoc_files: []
78
-
79
- files:
75
+ files:
80
76
  - lib/ohm/contrib/active_model_extension.rb
81
77
  - lib/ohm/contrib/boundaries.rb
82
78
  - lib/ohm/contrib/callbacks.rb
@@ -97,7 +93,6 @@ files:
97
93
  - LICENSE
98
94
  - Rakefile
99
95
  - test/activemodel_test.rb
100
- - test/autoload_test.rb
101
96
  - test/boundaries_test.rb
102
97
  - test/callbacks_lint.rb
103
98
  - test/date_validations_test.rb
@@ -125,33 +120,28 @@ files:
125
120
  - test/typecast_time_test.rb
126
121
  - test/typecast_timezone_test.rb
127
122
  - test/web_validations_test.rb
128
- has_rdoc: true
129
123
  homepage: http://github.com/cyx/ohm-contrib
130
124
  licenses: []
131
-
132
125
  post_install_message:
133
126
  rdoc_options: []
134
-
135
- require_paths:
127
+ require_paths:
136
128
  - lib
137
- required_ruby_version: !ruby/object:Gem::Requirement
129
+ required_ruby_version: !ruby/object:Gem::Requirement
138
130
  none: false
139
- requirements:
140
- - - ">="
141
- - !ruby/object:Gem::Version
142
- version: "0"
143
- required_rubygems_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ required_rubygems_version: !ruby/object:Gem::Requirement
144
136
  none: false
145
- requirements:
146
- - - ">="
147
- - !ruby/object:Gem::Version
148
- version: "0"
137
+ requirements:
138
+ - - ! '>='
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
149
141
  requirements: []
150
-
151
142
  rubyforge_project: ohm-contrib
152
- rubygems_version: 1.5.0
143
+ rubygems_version: 1.8.11
153
144
  signing_key:
154
145
  specification_version: 2
155
146
  summary: A collection of decoupled drop-in modules for Ohm.
156
147
  test_files: []
157
-
@@ -1,19 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require File.expand_path("./helper", File.dirname(__FILE__))
4
-
5
- test "autoloading of all libraries" do
6
- assert_nothing_raised NameError, LoadError do
7
- Ohm::ActiveModelExtension
8
- Ohm::Boundaries
9
- Ohm::Timestamping
10
- Ohm::WebValidations
11
- Ohm::NumberValidations
12
- Ohm::Typecast
13
- Ohm::Locking
14
- Ohm::ExtraValidations
15
- Ohm::DateValidations
16
- Ohm::FulltextSearching
17
- Ohm::Slug
18
- end
19
- end