simple_record 2.2.0 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/lib/simple_record.rb +26 -18
- data/lib/simple_record/active_sdb.rb +3 -8
- data/lib/simple_record/attributes.rb +11 -16
- data/lib/simple_record/translations.rb +3 -1
- data/lib/simple_record/validations.rb +3 -1
- metadata +106 -52
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6d82f7f10721f3429254cd5cbf854e2e77215c9b
|
4
|
+
data.tar.gz: 8e12f1815cff1df1e25bb2a867ea69fb26ebc1da
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ec8b1a17a7af48055349f0f3c1aa8fb65ef1643ea5b69064f20b0b60c69f0bd9a5fb2fb919750a4e7e69f8e0bbe0ad7ec2b364068308eea9cc4bdb4b67d43de9
|
7
|
+
data.tar.gz: b1843214f7d63f97b2a18e688a83be8bee04c5819cbcd78cc9faa49cdfd4af60343b8a9b74d162d6ed89b742590560122466f07c8b74f0fe96196168f28e53bd
|
data/lib/simple_record.rb
CHANGED
@@ -27,7 +27,12 @@
|
|
27
27
|
require 'aws'
|
28
28
|
require 'base64'
|
29
29
|
require 'active_support'
|
30
|
-
|
30
|
+
if ActiveSupport::VERSION::MAJOR >= 3
|
31
|
+
# had to do this due to some bug: https://github.com/rails/rails/issues/12876
|
32
|
+
# fix: https://github.com/railsmachine/shadow_puppet/pull/19/files
|
33
|
+
require 'active_support/deprecation'
|
34
|
+
require 'active_support/core_ext'
|
35
|
+
end
|
31
36
|
begin
|
32
37
|
# comment out line below to test rails2 validations
|
33
38
|
require 'active_model'
|
@@ -98,6 +103,9 @@ module SimpleRecord
|
|
98
103
|
def close_usage_log(type)
|
99
104
|
return unless @usage_logging_options[type]
|
100
105
|
@usage_logging_options[type][:file].close if @usage_logging_options[type][:file]
|
106
|
+
# unless we remove it, it will keep trying to log these events
|
107
|
+
# and will fail because the file is closed.
|
108
|
+
@usage_logging_options.delete(type)
|
101
109
|
end
|
102
110
|
|
103
111
|
def usage_logging_options
|
@@ -502,7 +510,7 @@ module SimpleRecord
|
|
502
510
|
def create_or_update(options) #:nodoc:
|
503
511
|
# puts 'create_or_update'
|
504
512
|
ret = true
|
505
|
-
|
513
|
+
run_callbacks :save do
|
506
514
|
result = new_record? ? create(options) : update(options)
|
507
515
|
# puts 'save_callbacks result=' + result.inspect
|
508
516
|
ret = result
|
@@ -513,7 +521,7 @@ module SimpleRecord
|
|
513
521
|
def create(options) #:nodoc:
|
514
522
|
puts '3 create'
|
515
523
|
ret = true
|
516
|
-
|
524
|
+
run_callbacks :create do
|
517
525
|
x = do_actual_save(options)
|
518
526
|
# puts 'create old_save result=' + x.to_s
|
519
527
|
ret = x
|
@@ -525,7 +533,7 @@ module SimpleRecord
|
|
525
533
|
def update(options) #:nodoc:
|
526
534
|
puts '3 update'
|
527
535
|
ret = true
|
528
|
-
|
536
|
+
run_callbacks :update do
|
529
537
|
x = do_actual_save(options)
|
530
538
|
# puts 'update old_save result=' + x.to_s
|
531
539
|
ret = x
|
@@ -773,20 +781,19 @@ module SimpleRecord
|
|
773
781
|
results = []
|
774
782
|
to_save = []
|
775
783
|
if objects && objects.size > 0
|
776
|
-
objects.
|
777
|
-
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
connection.batch_put_attributes(domain, to_save, options)
|
785
|
-
to_save.clear
|
784
|
+
objects.each_slice(25) do |objs|
|
785
|
+
objs.each do |o|
|
786
|
+
ok = o.pre_save(options)
|
787
|
+
raise "Pre save failed on object [" + o.inspect + "]" if !ok
|
788
|
+
results << ok
|
789
|
+
next if !ok # todo: this shouldn't be here should it? raises above
|
790
|
+
o.pre_save2
|
791
|
+
to_save << Aws::SdbInterface::Item.new(o.id, o.attributes, true)
|
786
792
|
end
|
793
|
+
connection.batch_put_attributes(domain, to_save, options)
|
794
|
+
to_save.clear
|
787
795
|
end
|
788
796
|
end
|
789
|
-
connection.batch_put_attributes(domain, to_save, options) if to_save.size > 0
|
790
797
|
objects.each do |o|
|
791
798
|
o.save_lobs(nil)
|
792
799
|
end
|
@@ -796,8 +803,9 @@ module SimpleRecord
|
|
796
803
|
# Pass in an array of objects
|
797
804
|
def self.batch_delete(objects, options={})
|
798
805
|
if objects
|
799
|
-
|
800
|
-
|
806
|
+
objects.each_slice(25) do |objs|
|
807
|
+
connection.batch_delete_attributes @domain, objs.collect { |x| x.id }
|
808
|
+
end
|
801
809
|
end
|
802
810
|
end
|
803
811
|
|
@@ -844,7 +852,7 @@ module SimpleRecord
|
|
844
852
|
|
845
853
|
def destroy
|
846
854
|
if @@active_model
|
847
|
-
|
855
|
+
run_callbacks :destroy do
|
848
856
|
delete
|
849
857
|
end
|
850
858
|
else
|
@@ -20,13 +20,7 @@
|
|
20
20
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
21
21
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
22
|
#
|
23
|
-
|
24
|
-
begin
|
25
|
-
require 'uuidtools'
|
26
|
-
rescue LoadError => e
|
27
|
-
STDERR.puts("SimpleRecord requires the uuidtools gem. Run \'gem install uuidtools\' and try again.")
|
28
|
-
exit
|
29
|
-
end
|
23
|
+
require 'uuidtools'
|
30
24
|
|
31
25
|
module SimpleRecord
|
32
26
|
|
@@ -355,7 +349,8 @@ module SimpleRecord
|
|
355
349
|
end
|
356
350
|
|
357
351
|
def generate_id # :nodoc:
|
358
|
-
|
352
|
+
# mac address creation sometimes throws errors if mac address isn't available
|
353
|
+
UUIDTools::UUID.random_create().to_s
|
359
354
|
end
|
360
355
|
|
361
356
|
protected
|
@@ -219,24 +219,19 @@ module SimpleRecord
|
|
219
219
|
define_dirty_methods(arg_s)
|
220
220
|
end
|
221
221
|
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
#note the first parameter is just a string by time new gets it, like "user"
|
229
|
-
#the second and third parameters are still a variable when new gets it, like user_id
|
230
|
-
return eval(%{Activerecordtosdb_subrecord_array.new('#{arg}', self.class.name ,id)})
|
231
|
-
end
|
222
|
+
# allows foreign key through class_name
|
223
|
+
# i.e. options[:class_name] = 'User'
|
224
|
+
def has_many(association_id, options = {})
|
225
|
+
|
226
|
+
send(:define_method, association_id) do
|
227
|
+
return eval(%{Activerecordtosdb_subrecord_array.new('#{options[:class_name] ? options[:class_name] : association_id}', '#{options[:class_name] ? association_id.to_s : self.class.name}', id)})
|
232
228
|
end
|
233
|
-
#Disclaimer: this whole funciton just seems crazy to me, and a bit inefficient. But it was the clearest way I could think to do it code wise.
|
234
|
-
#It's bad programming form (imo) to have a class method require something that isn't passed to it through it's variables.
|
235
|
-
#I couldn't pass the id when calling find, since the original find doesn't work that way, so I was left with this.
|
236
229
|
end
|
237
230
|
|
238
|
-
def
|
239
|
-
|
231
|
+
def has_many(association_id, options = {})
|
232
|
+
send(:define_method, association_id) do
|
233
|
+
return eval(%{Activerecordtosdb_subrecord_array.new('#{options[:class_name] ? options[:class_name] : association_id}', '#{options[:class_name] ? association_id.to_s : self.class.name}', id)}).first
|
234
|
+
end
|
240
235
|
end
|
241
236
|
|
242
237
|
|
@@ -437,4 +432,4 @@ module SimpleRecord
|
|
437
432
|
end
|
438
433
|
|
439
434
|
end
|
440
|
-
end
|
435
|
+
end
|
@@ -119,6 +119,8 @@ module SimpleRecord
|
|
119
119
|
value = to_date(value)
|
120
120
|
elsif att_meta.type == :boolean
|
121
121
|
value = to_bool(value)
|
122
|
+
elsif att_meta.type == :float
|
123
|
+
value = Float(value)
|
122
124
|
end
|
123
125
|
value
|
124
126
|
end
|
@@ -303,4 +305,4 @@ module SimpleRecord
|
|
303
305
|
end
|
304
306
|
end
|
305
307
|
|
306
|
-
end
|
308
|
+
end
|
@@ -71,7 +71,9 @@ module SimpleRecord
|
|
71
71
|
val = self.send(k)
|
72
72
|
puts 'val=' + val.inspect
|
73
73
|
if val
|
74
|
-
|
74
|
+
conditions = new_record? ? ["#{k}=?", val] : ["#{k}=? AND id != ?", val, self.id]
|
75
|
+
|
76
|
+
ret = self.class.find(:first, :conditions=>conditions)
|
75
77
|
puts 'ret=' + ret.inspect
|
76
78
|
if ret
|
77
79
|
errors.add(k, "must be unique.")
|
metadata
CHANGED
@@ -1,51 +1,112 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_record
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
version: 2.2.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 4.0.0
|
6
5
|
platform: ruby
|
7
|
-
authors:
|
6
|
+
authors:
|
8
7
|
- Travis Reeder
|
9
8
|
- Chad Arimura
|
10
9
|
- RightScale
|
11
10
|
autorequire:
|
12
11
|
bindir: bin
|
13
12
|
cert_chain: []
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
13
|
+
date: 2012-01-12 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: uuidtools
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
19
23
|
prerelease: false
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - '>='
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '0'
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: activesupport
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - '>='
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '0'
|
26
36
|
type: :runtime
|
27
|
-
version_requirements: *id001
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: concur
|
30
37
|
prerelease: false
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - '>='
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '0'
|
43
|
+
- !ruby/object:Gem::Dependency
|
44
|
+
name: i18n
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - '>='
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '0'
|
50
|
+
type: :runtime
|
51
|
+
prerelease: false
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - '>='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: jeweler
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - '>='
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: '0'
|
64
|
+
type: :development
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - '>='
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '0'
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: aws
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
37
78
|
type: :runtime
|
38
|
-
|
39
|
-
|
79
|
+
prerelease: false
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: concur
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - '>='
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '0'
|
92
|
+
type: :runtime
|
93
|
+
prerelease: false
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
description: ActiveRecord like interface for Amazon SimpleDB. Store, query, shard,
|
100
|
+
etc. By http://www.appoxy.com
|
40
101
|
email: travis@appoxy.com
|
41
102
|
executables: []
|
42
|
-
|
43
103
|
extensions: []
|
44
|
-
|
45
|
-
|
104
|
+
extra_rdoc_files:
|
105
|
+
- LICENSE.markdown
|
106
|
+
- README.markdown
|
107
|
+
files:
|
46
108
|
- LICENSE.markdown
|
47
109
|
- README.markdown
|
48
|
-
files:
|
49
110
|
- lib/simple_record.rb
|
50
111
|
- lib/simple_record/active_sdb.rb
|
51
112
|
- lib/simple_record/attributes.rb
|
@@ -60,34 +121,27 @@ files:
|
|
60
121
|
- lib/simple_record/stats.rb
|
61
122
|
- lib/simple_record/translations.rb
|
62
123
|
- lib/simple_record/validations.rb
|
63
|
-
- LICENSE.markdown
|
64
|
-
- README.markdown
|
65
124
|
homepage: http://github.com/appoxy/simple_record/
|
66
125
|
licenses: []
|
67
|
-
|
126
|
+
metadata: {}
|
68
127
|
post_install_message:
|
69
128
|
rdoc_options: []
|
70
|
-
|
71
|
-
require_paths:
|
129
|
+
require_paths:
|
72
130
|
- lib
|
73
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
version: "0"
|
131
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - '>='
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
136
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - '>='
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0'
|
85
141
|
requirements: []
|
86
|
-
|
87
142
|
rubyforge_project:
|
88
|
-
rubygems_version:
|
143
|
+
rubygems_version: 2.2.2
|
89
144
|
signing_key:
|
90
|
-
specification_version:
|
145
|
+
specification_version: 4
|
91
146
|
summary: ActiveRecord like interface for Amazon SimpleDB. By http://www.appoxy.com
|
92
147
|
test_files: []
|
93
|
-
|