fileminer 1.1.0 → 1.1.1

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: 721d984d3d2e8c905f0bf86d52b2d89fb0adbb70c651ddd7d48cac16720d3584
4
- data.tar.gz: 12015a1aba0b44df10b4033ff476a4d7818d3db250e5bbbe9b0a9c4d1afc4c3b
3
+ metadata.gz: 40b0403c4675a8340fee70e155fd7e39ccc902144ca4ab1af03a08db4b8ef8d9
4
+ data.tar.gz: f344c468064be5e3a594befbb62a43e5937f4351029fa88a7fef3a0d6310ce87
5
5
  SHA512:
6
- metadata.gz: b0c9305e8e2ca63f13812593cdd1d9697de6fd51d9e633a5249accd704dbbc487924e2a36b2d2ff40981d7a271d79325a2a607b4618d1b82ca56693d7f9dad7a
7
- data.tar.gz: 017dddf1edc9b4859124504e05bb1d2ed46b6d52c9bec053e56b838e9ded56027d6cbeedd768578ebfa9249c6e716f2b872157f77ad0cf06073f95b471cb2510
6
+ metadata.gz: 9f72907fd4e74d2bbbd93130fd1762101c1aa757a44923067b47eb62a515d7e3a18e4452cd2eb4ad73cb66f36d06ca2b3bc6bb4fe0a04c6131ba2b29256d40fc
7
+ data.tar.gz: '022318a184a41042136a96d2691890ca3d78f4a3d12b2e9ea2ffe2774430d98861460e9e3a0fb0ae2a3e6f820791af24e39e7c7bc1bac2a53406fa5e74d82aed'
data/README.md CHANGED
@@ -20,6 +20,9 @@ Done installing documentation for fileminer after 0 seconds
20
20
  $ _
21
21
  ```
22
22
 
23
+ *Note: This tool now only support cruby.*
24
+
25
+
23
26
  2. setting up fileminer
24
27
 
25
28
  * generate configuration file
@@ -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.1.0'
3
+ VERSION = '1.1.1'
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.1.0
4
+ version: 1.1.1
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.