fileminer 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 298242b9908865e27853c1085f4cdaeafeaa7f94fc001f35ebe66fabf1ef9627
4
- data.tar.gz: d446249317bcd2b10d58b98825a67f1f27a71f3d393ef618f43f259f146701a2
3
+ metadata.gz: bc8657cdddb39cdeb63ba485063c29e8b743f1ab333b440b830eeb0b1ab40ffb
4
+ data.tar.gz: 429b76ea2aaa66be2b13d25314f3d85f68b0fdb6c8acea79d8dd6468ab357d92
5
5
  SHA512:
6
- metadata.gz: c7535eaddaa3da7b7dad8350b04e3583bc93ff96e26cd3ed265319c4213d9aca4cb3016f8bf82070a96da21059d58c7912c89de608b918e7f42ff1d0a1f0ffa2
7
- data.tar.gz: dbf77c43ff0ee9d79402837cf17a205b06268a6f9241dfa9171ea88a7b97fa699b2a750a23a68eb2b59210ffb08bcd4d73cc985646b491ee677e25faf8c4b394
6
+ metadata.gz: 941055a2163c105d3cd58aaeb0c6fdf83df66a2a11f7001ae7ef5639a4b0edbc62271335bdcf43283f03e198a8bd86e5a342ff10dfe626420fa254c23c630370
7
+ data.tar.gz: 3b684114ebd59fcd11684ec1b132a7e535d96df47e498fad0a9cc70ef1126687f51081cd922a19021fba60ab7ae283a95736c2416df9b87cc24f24c1405aaa81
@@ -14,6 +14,7 @@ module Output
14
14
  ssl_mode: :disabled
15
15
  }
16
16
 
17
+ #
17
18
  # Create a mysql output plugin instance
18
19
  #
19
20
  # @param [Hash] options
@@ -36,20 +37,30 @@ module Output
36
37
  @encoding = conf[:encoding]
37
38
  conf[:ssl_mode] = :disabled if conf[:ssl_mode] != :enabled
38
39
  @mysql = Mysql2::Client.new conf
40
+ @mysql_conf = conf
39
41
  create_table_if_not_exists
40
42
  @sqls = Hash.new { |hash, key| hash[key] = generate_batch_sql key }
41
43
  end
42
44
 
43
45
  private
44
46
  def create_table_if_not_exists
45
- rs = @mysql.query 'SHOW TABLES'
47
+ mysql_client = get_mysql_client
48
+ rs = mysql_client.query 'SHOW TABLES'
46
49
  tables = rs.map { |row| row.values[0] }
47
50
  unless tables.include? @table
48
51
  sql = create_table_sql
49
- @mysql.query sql
52
+ mysql_client.query sql
50
53
  end
51
54
  end
52
55
 
56
+ def get_mysql_client
57
+ mysql_client = @mysql
58
+ if mysql_client.closed?
59
+ @mysql = mysql_client = Mysql2::Client.new @mysql_conf
60
+ end
61
+ mysql_client
62
+ end
63
+
53
64
  def create_table_sql
54
65
  <<-EOS
55
66
  CREATE TABLE `#@table` (
@@ -68,14 +79,7 @@ module Output
68
79
  "INSERT IGNORE INTO `#@table`(`host`,`path`,`pos`,`end`,`data`) VALUES " << (['(?,?,?,?,?)'] * size).join(',')
69
80
  end
70
81
 
71
- def get_batch_sql(size)
72
- if @sqls.key? size
73
- @sqls[size]
74
- else
75
- @sqls[size] = generate_batch_sql size
76
- end
77
- end
78
-
82
+ #
79
83
  # Send all lines to mysql
80
84
  #
81
85
  # @param [Array] lines
@@ -83,18 +87,12 @@ module Output
83
87
  public
84
88
  def send_all(lines, &listener)
85
89
  values = lines.flat_map { |line| [line[:host], line[:path], line[:pos], line[:end], line[:data]] }
86
- sql = get_batch_sql lines.size
87
- @mysql.query 'BEGIN'
88
- begin
89
- stat = @mysql.prepare sql
90
- stat.execute *values
91
- stat.close
92
- @mysql.query 'COMMIT'
93
- listener.call
94
- rescue => err
95
- @mysql.query 'ROLLBACK'
96
- raise err
97
- end
90
+ sql = @sqls[lines.size]
91
+ mysql_client = get_mysql_client
92
+ stmt = @mysql_client.prepare sql
93
+ stmt.execute *values
94
+ stmt.close
95
+ listener.call
98
96
  end
99
97
 
100
98
  end
@@ -1,5 +1,5 @@
1
1
  class FileMiner
2
2
 
3
- VERSION = '1.0.1'
3
+ VERSION = '1.0.2'
4
4
 
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fileminer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fang MinJie
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-20 00:00:00.000000000 Z
11
+ date: 2019-06-24 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A simple file/log transfer tool coding by ruby.
14
14
  email:
@@ -54,7 +54,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  requirements: []
57
- rubygems_version: 3.0.1
57
+ rubygems_version: 3.0.4
58
58
  signing_key:
59
59
  specification_version: 4
60
60
  summary: A simple file/log transfer tool coding by ruby.