seapig-postgresql-notifier 0.2.0 → 0.2.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 50448368cc1de622442aaaf0b5bfcc58be12e641
4
- data.tar.gz: 27cbd3f1ba86bdd1dc0e8d2aee2731368eefaa6a
3
+ metadata.gz: 72309a9b93cf680567c2aa344893cd3bcfa3b6e9
4
+ data.tar.gz: 3d4104a5d3e48008abc200babfa2485c05dc8e05
5
5
  SHA512:
6
- metadata.gz: 2113ccfffa3ee07c043c602704beca2b2d4124ecdc703791fde870883e2abbf6e231400628a0980cd5fb72b44dbb34c085f9cac8cd954c5ffa1f3b6f136182f1
7
- data.tar.gz: 579dfa4bfdf826fec17104961312228cfadcd07239f760e3c6ff4a24416eb94445ad6bcc3acaece8b02e6e552aaa937bc6990e4f0f73194632f7e8b4fb4e3fc1
6
+ metadata.gz: a355d83e98ea084861838eb0e84233b0fff97e77a52e46acaac0476bdba35b076c8cc38051154ef3dce45021863a3c026ce990bf164df582d716edd314a36097
7
+ data.tar.gz: '0809639f8e9305e7852704870e12c8f8cf76b741f2170363dd1d6ab260de6481b3650582bb6146cd9a6588fd837882c2d122dacdc2ee13bd5ee70155d35f4961'
@@ -12,8 +12,9 @@ STDOUT.sync = true
12
12
  OPTIONS = Slop.parse { |o|
13
13
  o.string '-c', '--connect', "Seapig server address (default: ws://127.0.0.1:3001)", default: "ws://127.0.0.1:3001"
14
14
  o.array '-i', '--intervals', 'List of durations for interval objects (e.g. 1,60,3600)', default: ""
15
- o.string '-d', '--database-url', 'Database URL (e.g. postgres://USER:PASS@PGHOST/DBNAME)'
15
+ o.string '-b', '--database-url', 'Database URL (e.g. postgres://USER:PASS@PGHOST/DBNAME)'
16
16
  o.string '-e', '--environment' , 'Rails environment to use when loading database config from config/database.yml'
17
+ o.bool '-d', '--debug', 'Show debug messages'
17
18
  o.on '-h', '--help' do puts o; exit end
18
19
  }
19
20
 
@@ -21,26 +22,28 @@ if (not OPTIONS["database-url"]) and (not File.exist?("config/database.yml")) th
21
22
  database_config = (OPTIONS["database-url"] or YAML.load_file("config/database.yml")[(OPTIONS["environment"] or ENV["RAILS_ENV"] or "development")])
22
23
  ActiveRecord::Base.establish_connection(database_config)
23
24
 
25
+ startup_resend_condition = " OR updated_at > (SELECT max(updated_at) FROM seapig_dependencies) - INTERVAL '60 seconds'" # timeout hits in 20-30s so 60s should be safe
24
26
 
25
27
  EM.run {
26
28
 
27
- client = SeapigClient.new(OPTIONS["connect"], name: 'notifier')
29
+ client = SeapigClient.new(OPTIONS["connect"], name: 'notifier', debug: OPTIONS.debug?)
30
+
28
31
  master_object = client.master(SeapigDependency::OBJECT_PREFIX+"*")
29
32
  master_object.onproduce { |child|
30
33
  version = (SeapigDependency.version(child.id[SeapigDependency::OBJECT_PREFIX.size .. -1]) or 0)
31
34
  child.set(version: version)
32
- puts 'Dependency version produced: %30s:%-10s'%[child.id,version]
35
+ puts 'Dependency version produced: %30s version: %-10s'%[child.id,version]
33
36
  }
34
37
 
35
-
36
38
  on_database_change = Proc.new {
37
39
  next if not client.connected
38
- SeapigDependency.where("current_version != reported_version").each { |seapig_dependency|
39
- puts "Dependency version changed: %30s:%-10s"%[seapig_dependency.name,seapig_dependency.current_version]
40
+ SeapigDependency.where("current_version != reported_version"+startup_resend_condition).each { |seapig_dependency|
41
+ puts "Dependency version changed, uploading: %30s version:%-10s"%[seapig_dependency.name,seapig_dependency.current_version]
40
42
  master_object[SeapigDependency::OBJECT_PREFIX+seapig_dependency.name].set(version: seapig_dependency.current_version)
41
43
  seapig_dependency.reported_version = seapig_dependency.current_version
42
44
  seapig_dependency.save!
43
45
  }
46
+ startup_resend_condition = ""
44
47
  }
45
48
 
46
49
 
@@ -73,6 +76,6 @@ EM.run {
73
76
  }
74
77
  }
75
78
 
76
- EM.schedule on_database_change
77
79
 
80
+ client.onstatuschange { EM.schedule on_database_change }
78
81
  }
@@ -1,3 +1,3 @@
1
1
  module SeapigPostgresqlNotifier
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seapig-postgresql-notifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - yunta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-26 00:00:00.000000000 Z
11
+ date: 2017-03-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.2.0
33
+ version: 0.2.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 0.2.0
40
+ version: 0.2.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: slop
43
43
  requirement: !ruby/object:Gem::Requirement