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.
Files changed (4) hide show
  1. data/VERSION +1 -1
  2. data/lib/sneaky-save.rb +41 -44
  3. data/sneaky-save.gemspec +4 -4
  4. metadata +58 -76
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
@@ -5,60 +5,57 @@
5
5
  module SneakySave
6
6
  extend ActiveSupport::Concern
7
7
 
8
- module InstanceMethods
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
- # Saves record without running callbacks/validations.
11
- # Returns true if any record is changed.
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 sneaky_save
19
- begin
20
- new_record? ? sneaky_create : sneaky_update
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
- new_id = if attributes_values.empty?
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
- @new_record = false
45
- !!(self.id ||= new_id)
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
- # Makes update query without running callbacks.
49
- #
50
- # @return [false, true]
51
- def sneaky_update
42
+ @new_record = false
43
+ !!(self.id ||= new_id)
44
+ end
52
45
 
53
- # Handle no changes.
54
- return true unless changes.any?
46
+ # Makes update query without running callbacks.
47
+ #
48
+ # @return [false, true]
49
+ def sneaky_update
55
50
 
56
- # Here we have changes --> save them.
57
- pk = self.class.primary_key
58
- original_id = changed_attributes.has_key?(pk) ? changes[pk].first : send(pk)
59
- !self.class.update_all(attributes, pk => original_id).zero?
60
- end
61
- end
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
@@ -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.2"
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>, [">= 2.3.2"])
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>, [">= 2.3.2"])
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>, [">= 2.3.2"])
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
- hash: 27
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
- date: 2011-10-18 00:00:00 +08:00
20
- default_executable:
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
- prerelease: false
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
- hash: 7
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
- requirement: &id002 !ruby/object:Gem::Requirement
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
- requirement: &id003 !ruby/object:Gem::Requirement
41
+ version_requirements: !ruby/object:Gem::Requirement
58
42
  none: false
59
- requirements:
43
+ requirements:
60
44
  - - ~>
61
- - !ruby/object:Gem::Version
62
- hash: 11
63
- segments:
64
- - 1
65
- - 6
66
- - 2
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
- version_requirements: *id003
70
- description: ActiveRecord extension. Allows to save record without calling callbacks and validations.
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
- hash: 3
107
- segments:
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
- hash: 3
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.5.0
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
-