simple_record 2.2.0 → 4.0.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.
- 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
|
-
|