seapig-postgresql-notifier 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|