Sha256: 0fd3409cf83dfc42d09f3b4fc0fb473098df541620ef2185fc56828ebda4fb2d
Contents?: true
Size: 1.36 KB
Versions: 2
Compression:
Stored size: 1.36 KB
Contents
#!/bin/env ruby require './config/environment.rb' require 'seapig-client' STDOUT.sync = true #ActiveRecord::Base.logger = Logger.new(STDERR) EM.run { server = SeapigServer.new(ARGV[0], name: 'notifier') seapigs = Hash.new { |h,k| h[k] = server.notifier(k) } on_database_change = Proc.new { next if not server.connected SeapigDependency.where("current_version != reported_version").each { |seapig_dependency| puts "Dependency version changed: %30s:%-10s"%[seapig_dependency.name,seapig_dependency.current_version] seapigs[seapig_dependency.name].changed(seapig_dependency.current_version) seapig_dependency.reported_version = seapig_dependency.current_version seapig_dependency.save! } } Thread.new { begin ActiveRecord::Base.connection_pool.with_connection { |connection| connection = connection.instance_variable_get(:@connection) connection.exec("LISTEN seapig_dependency_changed") loop { connection.wait_for_notify { |channel, pid, payloads| EM.schedule(on_database_change) } } } rescue Exception => e puts "Exception in database thread" p e EM.schedule { server.disconnect EM.stop } end } (ARGV[1] or "").split(',').each { |interval| EM.add_periodic_timer(interval.to_i) { seapigs['Seconds#'+interval].changed(Time.new.to_i/interval.to_i) } } EM.schedule on_database_change }
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
seapig-rails-0.1.2 | bin/seapig-rails-notifier |
seapig-rails-0.1.0 | bin/seapig-rails-notifier |