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 +4 -4
- data/bin/seapig-postgresql-notifier +10 -7
- data/lib/seapig-postgresql-notifier/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 72309a9b93cf680567c2aa344893cd3bcfa3b6e9
|
4
|
+
data.tar.gz: 3d4104a5d3e48008abc200babfa2485c05dc8e05
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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 '-
|
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
|
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
|
}
|
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.
|
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-
|
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.
|
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.
|
40
|
+
version: 0.2.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: slop
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|