railhead_handlersocket 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -42,15 +42,27 @@ class HandlerSocket
42
42
  result
43
43
  end
44
44
  end
45
+
46
+ def execute_delete_with_error(*args)
47
+ result = execute_delete(*args)
48
+ if result.nil?
49
+ raise HandlerSocketError, 'nil returned (execute delete)'
50
+ elsif result[0] != 0
51
+ raise HandlerSocketError, result[1]
52
+ else
53
+ result
54
+ end
55
+ end
45
56
  end
46
57
 
47
58
 
48
59
  class ActiveRecord::Base
49
60
 
50
- def self.use_handlersocket(host = '127.0.0.1', port = 9998)
61
+ def self.use_handlersocket(host = '127.0.0.1', port = 9999)
51
62
  @@hs = HandlerSocket.new(host, port)
52
63
  @@hs_db_name = connection.instance_variable_get(:@config)[:database]
53
64
  @@hs_indexes = {}
65
+ alias_method_chain :destroy, :handlersocket
54
66
 
55
67
  class << self
56
68
  alias_method_chain :find_one, :handlersocket
@@ -63,16 +75,39 @@ class ActiveRecord::Base
63
75
  def self.reconnect_handlersocket
64
76
  @@hs.reconnect
65
77
  @@hs_indexes = {}
66
- @hs_reconnected = true
78
+ end
79
+
80
+ def destroy_with_handlersocket
81
+ begin
82
+ self.class.del_through_handlersocket(self.id) unless new_record?
83
+ @destroyed = true
84
+ freeze
85
+ rescue
86
+ destroy_without_handlersocket
87
+ end
67
88
  end
68
89
 
69
90
  class << self
70
91
 
71
92
  def open_index(index_name)
72
- unless index = @@hs_indexes["#{@@hs_db_name}.#{table_name} #{index_name}"]
73
- index = @@hs_indexes.size
74
- @@hs.open_index_with_error(index, @@hs_db_name, table_name, index_name, column_names.join(','))
75
- @@hs_indexes["#{@@hs_db_name}.#{table_name} #{index_name}"] = index
93
+ hs_reconnected = false
94
+ begin
95
+ unless index = @@hs_indexes["#{@@hs_db_name}.#{table_name} #{index_name}"]
96
+ index = @@hs_indexes.size
97
+ logger.debug "HS: open index #{@@hs_db_name}.#{table_name} #{index_name}"
98
+ @@hs.open_index_with_error(index, @@hs_db_name, table_name, index_name, column_names.join(','))
99
+ @@hs_indexes["#{@@hs_db_name}.#{table_name} #{index_name}"] = index
100
+ end
101
+ rescue HandlerSocket::HandlerSocketError => e
102
+ unless hs_reconnected
103
+ logger.info "HS: reconnecting"
104
+ hs_reconnected = true
105
+ ActiveRecord::Base.reconnect_handlersocket
106
+ retry
107
+ else
108
+ logger.info "HS: reconnection failed"
109
+ raise e
110
+ end
76
111
  end
77
112
  index
78
113
  end
@@ -87,19 +122,7 @@ class ActiveRecord::Base
87
122
 
88
123
  def get_through_handlersocket(ids, index_name = 'PRIMARY')
89
124
  unless ids.nil?
90
- @hs_reconnected = false
91
- begin
92
- index = open_index(index_name)
93
- rescue HandlerSocket::HandlerSocketError => e
94
- unless @hs_reconnected
95
- logger.info "HS: reconnecting"
96
- ActiveRecord::Base.reconnect_handlersocket
97
- retry
98
- else
99
- logger.info "HS: reconnection failed"
100
- raise e
101
- end
102
- end
125
+ index = open_index(index_name)
103
126
  begin
104
127
  logger.debug "HS: #{@@hs_db_name}.#{table_name} #{index_name} #{ids.inspect}"
105
128
  if ids.is_a?(Array)
@@ -114,6 +137,19 @@ class ActiveRecord::Base
114
137
  end
115
138
  end
116
139
 
140
+ def del_through_handlersocket(id, index_name = 'PRIMARY')
141
+ unless id.nil?
142
+ index = open_index(index_name)
143
+ begin
144
+ logger.debug "HS: #{@@hs_db_name}.#{table_name} #{index_name} DELETE #{id}"
145
+ @@hs.execute_delete_with_error(index, '=', [id], 1, 0)
146
+ rescue HandlerSocket::HandlerSocketError => e
147
+ logger.debug "HS: delete failed - #{e.message}"
148
+ raise e
149
+ end
150
+ end
151
+ end
152
+
117
153
  def find_one_with_handlersocket(ids, options = {})
118
154
  get_through_handlersocket(ids) rescue find_one_without_handlersocket(ids, options)
119
155
  end
@@ -1,8 +1,8 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "railhead_handlersocket"
3
- s.version = "0.0.1"
4
- s.date = "2011-05-07"
5
- s.summary = "Hacks for ActiveRecord 2.x to working with HandlerSocket.B"
3
+ s.version = "0.0.2"
4
+ s.date = "2011-06-10"
5
+ s.summary = "Hacks for ActiveRecord 2.x to working with HandlerSocket."
6
6
  s.email = "nagybence@tipogral.hu"
7
7
  s.homepage = "http://github.com/nagybence/railhead_cacheify"
8
8
  s.description = "Hacks for ActiveRecord 2.x to working with HandlerSocket."
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: railhead_handlersocket
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
5
- prerelease:
4
+ hash: 27
5
+ prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 1
10
- version: 0.0.1
9
+ - 2
10
+ version: 0.0.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Bence Nagy
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-05-07 00:00:00 +02:00
18
+ date: 2011-06-10 00:00:00 +02:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -64,9 +64,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
64
  requirements: []
65
65
 
66
66
  rubyforge_project:
67
- rubygems_version: 1.5.2
67
+ rubygems_version: 1.3.7
68
68
  signing_key:
69
69
  specification_version: 3
70
- summary: Hacks for ActiveRecord 2.x to working with HandlerSocket.B
70
+ summary: Hacks for ActiveRecord 2.x to working with HandlerSocket.
71
71
  test_files: []
72
72