sneaky-save 0.0.2 → 0.0.3
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 +1 -1
- data/lib/sneaky-save.rb +41 -44
- data/sneaky-save.gemspec +4 -4
- metadata +58 -76
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.3
|
data/lib/sneaky-save.rb
CHANGED
@@ -5,60 +5,57 @@
|
|
5
5
|
module SneakySave
|
6
6
|
extend ActiveSupport::Concern
|
7
7
|
|
8
|
-
|
8
|
+
# Saves record without running callbacks/validations.
|
9
|
+
# Returns true if any record is changed.
|
10
|
+
#
|
11
|
+
# @note - Does not reload updated record by default.
|
12
|
+
# - Does not save associated collections.
|
13
|
+
# - Saves only belongs_to relations.
|
14
|
+
#
|
15
|
+
# @return [false, true]
|
16
|
+
def sneaky_save
|
17
|
+
begin
|
18
|
+
new_record? ? sneaky_create : sneaky_update
|
19
|
+
rescue ActiveRecord::StatementInvalid
|
20
|
+
false
|
21
|
+
end
|
22
|
+
end
|
9
23
|
|
10
|
-
|
11
|
-
|
24
|
+
protected
|
25
|
+
|
26
|
+
# Makes INSERT query in database without running any callbacks.
|
12
27
|
#
|
13
|
-
# @note - Does not reload updated record by default.
|
14
|
-
# - Does not save associated collections.
|
15
|
-
# - Saves only belongs_to relations.
|
16
|
-
#
|
17
28
|
# @return [false, true]
|
18
|
-
def
|
19
|
-
|
20
|
-
|
21
|
-
rescue ActiveRecord::StatementInvalid
|
22
|
-
false
|
29
|
+
def sneaky_create
|
30
|
+
if self.id.nil? && connection.prefetch_primary_key?(self.class.table_name)
|
31
|
+
self.id = connection.next_sequence_value(self.class.sequence_name)
|
23
32
|
end
|
24
|
-
end
|
25
|
-
|
26
|
-
protected
|
27
|
-
|
28
|
-
# Makes INSERT query in database without running any callbacks.
|
29
|
-
#
|
30
|
-
# @return [false, true]
|
31
|
-
def sneaky_create
|
32
|
-
if self.id.nil? && connection.prefetch_primary_key?(self.class.table_name)
|
33
|
-
self.id = connection.next_sequence_value(self.class.sequence_name)
|
34
|
-
end
|
35
|
-
|
36
|
-
attributes_values = send :arel_attributes_values
|
37
33
|
|
38
|
-
|
39
|
-
self.class.unscoped.insert connection.empty_insert_statement_value
|
40
|
-
else
|
41
|
-
self.class.unscoped.insert attributes_values
|
42
|
-
end
|
34
|
+
attributes_values = send :arel_attributes_values
|
43
35
|
|
44
|
-
|
45
|
-
|
36
|
+
new_id = if attributes_values.empty?
|
37
|
+
self.class.unscoped.insert connection.empty_insert_statement_value
|
38
|
+
else
|
39
|
+
self.class.unscoped.insert attributes_values
|
46
40
|
end
|
47
41
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
def sneaky_update
|
42
|
+
@new_record = false
|
43
|
+
!!(self.id ||= new_id)
|
44
|
+
end
|
52
45
|
|
53
|
-
|
54
|
-
|
46
|
+
# Makes update query without running callbacks.
|
47
|
+
#
|
48
|
+
# @return [false, true]
|
49
|
+
def sneaky_update
|
55
50
|
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
51
|
+
# Handle no changes.
|
52
|
+
return true unless changes.any?
|
53
|
+
|
54
|
+
# Here we have changes --> save them.
|
55
|
+
pk = self.class.primary_key
|
56
|
+
original_id = changed_attributes.has_key?(pk) ? changes[pk].first : send(pk)
|
57
|
+
!self.class.update_all(attributes, pk => original_id).zero?
|
58
|
+
end
|
62
59
|
end
|
63
60
|
|
64
61
|
ActiveRecord::Base.send :include, SneakySave
|
data/sneaky-save.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{sneaky-save}
|
5
|
-
s.version = "0.0.
|
5
|
+
s.version = "0.0.3"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Sergei Zinin", "Kevin Goslar"]
|
@@ -24,16 +24,16 @@ Gem::Specification.new do |s|
|
|
24
24
|
s.specification_version = 3
|
25
25
|
|
26
26
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
27
|
-
s.add_runtime_dependency(%q<activerecord>, [">=
|
27
|
+
s.add_runtime_dependency(%q<activerecord>, [">= 3.2.0"])
|
28
28
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
29
29
|
s.add_development_dependency(%q<jeweler>, ["~> 1.6.2"])
|
30
30
|
else
|
31
|
-
s.add_dependency(%q<activerecord>, [">=
|
31
|
+
s.add_dependency(%q<activerecord>, [">= 3.2.0"])
|
32
32
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
33
33
|
s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
|
34
34
|
end
|
35
35
|
else
|
36
|
-
s.add_dependency(%q<activerecord>, [">=
|
36
|
+
s.add_dependency(%q<activerecord>, [">= 3.2.0"])
|
37
37
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
38
38
|
s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
|
39
39
|
end
|
metadata
CHANGED
@@ -1,82 +1,74 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: sneaky-save
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 2
|
10
|
-
version: 0.0.2
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Sergei Zinin
|
14
9
|
- Kevin Goslar
|
15
10
|
autorequire:
|
16
11
|
bindir: bin
|
17
12
|
cert_chain: []
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
dependencies:
|
22
|
-
- !ruby/object:Gem::Dependency
|
13
|
+
date: 2011-10-18 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
23
16
|
name: activerecord
|
24
|
-
|
25
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
26
18
|
none: false
|
27
|
-
requirements:
|
28
|
-
- -
|
29
|
-
- !ruby/object:Gem::Version
|
30
|
-
|
31
|
-
segments:
|
32
|
-
- 2
|
33
|
-
- 3
|
34
|
-
- 2
|
35
|
-
version: 2.3.2
|
19
|
+
requirements:
|
20
|
+
- - ! '>='
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 3.2.0
|
36
23
|
type: :runtime
|
37
|
-
version_requirements: *id001
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
|
-
name: bundler
|
40
24
|
prerelease: false
|
41
|
-
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ! '>='
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
version: 3.2.0
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: bundler
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
42
34
|
none: false
|
43
|
-
requirements:
|
35
|
+
requirements:
|
44
36
|
- - ~>
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
hash: 23
|
47
|
-
segments:
|
48
|
-
- 1
|
49
|
-
- 0
|
50
|
-
- 0
|
37
|
+
- !ruby/object:Gem::Version
|
51
38
|
version: 1.0.0
|
52
39
|
type: :development
|
53
|
-
version_requirements: *id002
|
54
|
-
- !ruby/object:Gem::Dependency
|
55
|
-
name: jeweler
|
56
40
|
prerelease: false
|
57
|
-
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
42
|
none: false
|
59
|
-
requirements:
|
43
|
+
requirements:
|
60
44
|
- - ~>
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 1.0.0
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: jeweler
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
67
54
|
version: 1.6.2
|
68
55
|
type: :development
|
69
|
-
|
70
|
-
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: !ruby/object:Gem::Requirement
|
58
|
+
none: false
|
59
|
+
requirements:
|
60
|
+
- - ~>
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 1.6.2
|
63
|
+
description: ActiveRecord extension. Allows to save record without calling callbacks
|
64
|
+
and validations.
|
71
65
|
email: kgoslar@partyearth.com
|
72
66
|
executables: []
|
73
|
-
|
74
67
|
extensions: []
|
75
|
-
|
76
|
-
extra_rdoc_files:
|
68
|
+
extra_rdoc_files:
|
77
69
|
- LICENSE.txt
|
78
70
|
- README.rdoc
|
79
|
-
files:
|
71
|
+
files:
|
80
72
|
- .gitignore
|
81
73
|
- Gemfile
|
82
74
|
- Gemfile.lock
|
@@ -89,39 +81,29 @@ files:
|
|
89
81
|
- spec/fixtures.rb
|
90
82
|
- spec/lib/sneaky_save_spec.rb
|
91
83
|
- spec/spec_helper.rb
|
92
|
-
has_rdoc: true
|
93
84
|
homepage: http://github.com/partyearth/sneaky-save
|
94
|
-
licenses:
|
85
|
+
licenses:
|
95
86
|
- MIT
|
96
87
|
post_install_message:
|
97
88
|
rdoc_options: []
|
98
|
-
|
99
|
-
require_paths:
|
89
|
+
require_paths:
|
100
90
|
- lib
|
101
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
91
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
102
92
|
none: false
|
103
|
-
requirements:
|
104
|
-
- -
|
105
|
-
- !ruby/object:Gem::Version
|
106
|
-
|
107
|
-
|
108
|
-
- 0
|
109
|
-
version: "0"
|
110
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ! '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
111
98
|
none: false
|
112
|
-
requirements:
|
113
|
-
- -
|
114
|
-
- !ruby/object:Gem::Version
|
115
|
-
|
116
|
-
segments:
|
117
|
-
- 0
|
118
|
-
version: "0"
|
99
|
+
requirements:
|
100
|
+
- - ! '>='
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
119
103
|
requirements: []
|
120
|
-
|
121
104
|
rubyforge_project:
|
122
|
-
rubygems_version: 1.
|
105
|
+
rubygems_version: 1.8.19
|
123
106
|
signing_key:
|
124
107
|
specification_version: 3
|
125
108
|
summary: Allows to save record without calling callbacks and validations.
|
126
109
|
test_files: []
|
127
|
-
|