lenz_base 0.0.3 → 0.0.4

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 (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: []