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 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