lenz_base 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/lenz_base.rb +67 -10
  2. metadata +18 -2
data/lib/lenz_base.rb CHANGED
@@ -4,13 +4,16 @@ require 'json'
4
4
  require 'bunny'
5
5
  require 'mysql2'
6
6
  require 'logger'
7
+ require 'cassandra'
7
8
 
8
9
  class LenzBase
9
- def initialize()
10
+ def initialize(show_query = false)
10
11
  initLogger
11
12
  @sql_clients = {}
13
+ @cql_clients = {}
12
14
  @mq_sessions = {}
13
15
  @mq_channels = {}
16
+ @show_query = show_query
14
17
  end
15
18
 
16
19
  def initLogger
@@ -27,24 +30,24 @@ class LenzBase
27
30
  Kernel.sleep(duration)
28
31
  end
29
32
 
30
- def getDBClient(db_info)
33
+ def getSqlClient(db_info)
31
34
  if(!@sql_clients[db_info])
32
- @sql_clients[db_info] = createDBClient(db_info)
35
+ @sql_clients[db_info] = createSqlClient(db_info)
33
36
  end
34
37
  return @sql_clients[db_info]
35
38
  end
36
39
 
37
- def removeDBClient(db_info)
40
+ def removeSqlClient(db_info)
38
41
  if(@sql_clients[db_info])
39
42
  @sql_clients[db_info].close
40
43
  end
41
44
  @sql_clients[db_info] = nil
42
45
  end
43
46
 
44
- def createDBClient(db_info)
47
+ def createSqlClient(db_info)
45
48
  begin
46
49
  client = Mysql2::Client.new(db_info)
47
- log("DB connected #{db_info}")
50
+ log("MySql connected #{db_info}")
48
51
  return client
49
52
  rescue Exception => e
50
53
  log e
@@ -55,12 +58,53 @@ class LenzBase
55
58
 
56
59
  def querySql(db_info, query)
57
60
  begin
58
- result = getDBClient(db_info).query(query)
59
- log("query launched for #{db_info}")
61
+ result = getSqlClient(db_info).query(query)
62
+ log("SQL query launched for #{db_info}")
63
+ log(query) if @show_query
60
64
  return result ? result.entries : nil
61
65
  rescue Exception => e
62
66
  log e
63
- removeDBClient(db_info)
67
+ removeSqlClient(db_info)
68
+ sleep(5)
69
+ retry
70
+ end
71
+ end
72
+
73
+ def getCqlClient(db_info)
74
+ if(!@cql_clients[db_info])
75
+ @cql_clients[db_info] = createCqlClient(db_info)
76
+ end
77
+ return @cql_clients[db_info]
78
+ end
79
+
80
+ def removeCqlClient(db_info)
81
+ if(@cql_clients[db_info])
82
+ @cql_clients[db_info].close
83
+ end
84
+ @cql_clients[db_info] = nil
85
+ end
86
+
87
+ def createCqlClient(db_info)
88
+ begin
89
+ client = Cassandra.cluster(db_info).connect(db_info['key_space'])
90
+ log("Cassandra connected #{db_info}")
91
+ return client
92
+ rescue Exception => e
93
+ log e
94
+ sleep(5)
95
+ retry
96
+ end
97
+ end
98
+
99
+ def queryCql(db_info, query)
100
+ begin
101
+ result = getCqlClient(db_info).execute(query)
102
+ log("CQL query launched for #{db_info}")
103
+ log(query) if @show_query
104
+ return result
105
+ rescue Exception => e
106
+ log e
107
+ removeCqlClient(db_info)
64
108
  sleep(5)
65
109
  retry
66
110
  end
@@ -97,7 +141,7 @@ class LenzBase
97
141
  begin
98
142
  ch = getMQChannel(mq_info)
99
143
  q = ch.queue(mq_info[:name], mq_info[:options] == nil ? {} : mq_info[:options])
100
- q.publish(message, args)
144
+ q.publish(toJson(message), args)
101
145
  log("message published to #{mq_info}")
102
146
  rescue Exception => e
103
147
  log e
@@ -131,6 +175,14 @@ class LenzBase
131
175
  end
132
176
  end
133
177
 
178
+ def toJson(val)
179
+ if(val.respond_to? :to_json)
180
+ return val.to_json
181
+ else
182
+ return val.to_s
183
+ end
184
+ end
185
+
134
186
  def processMQMessage(mq_info, delivery_info, properties, body)
135
187
  end
136
188
 
@@ -149,5 +201,10 @@ class LenzBase
149
201
  log("close connection on #{db_info}")
150
202
  client.close
151
203
  end
204
+
205
+ @cql_clients.each do |db_info, client|
206
+ log("close connection on #{db_info}")
207
+ client.close
208
+ end
152
209
  end
153
210
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lenz_base
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-08-27 00:00:00.000000000 Z
12
+ date: 2014-11-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
@@ -75,6 +75,22 @@ dependencies:
75
75
  - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
77
  version: 1.2.8
78
+ - !ruby/object:Gem::Dependency
79
+ name: cassandra-driver
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: 1.0.0.rc
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 1.0.0.rc
78
94
  description: Lenz base
79
95
  email: heoseok87@leevi.co.kr
80
96
  executables: []