sneaky-save 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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
-