chron 0.1.0 → 0.1.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: 2ec4b962469200571eee45bc30a33fa3261ea301
4
- data.tar.gz: 5919a1c1b57c95701f44c4109c14e2f4bf5d27f4
3
+ metadata.gz: 8612f852c20c9fb3a69f0b5e0451a7be9545c9ea
4
+ data.tar.gz: 6bf7f72f9cff351a00fcfc079b153573989eb8e3
5
5
  SHA512:
6
- metadata.gz: 8fc075b1b1a993f8eddb6ab2510d77205eea6b86ce0b4799fab397b4fc94d5250b2c869c4683fdbb193438e0d428ca25217b58ed649d95db5bb696fd64e926e2
7
- data.tar.gz: 31338405a80e3125f4d6f73381dd4a0e8c10edbdb36a4cc4c489f5bee9ea1c74bc2257a9e29bfe041a5f4165b2f6bbfe0dbed5b08cd4db5dbc42ffdd24f84f0f
6
+ metadata.gz: c36656423f531ca0aeabadab42dee19a4e48d219df2e36233d352e85e9d3ec7f17230af237142ce8b35a977763a507acc5231cb030464a3df13052ee99776da4
7
+ data.tar.gz: 76d0406c59fcb2eb9f2a0cb257c6d714c07ca25e07523d1eb9f1ca7e0a1884f787cc750cc6378879137e383ea77438881be4f5584d9d8b1f4faa30a15159655e
data/chron.gemspec CHANGED
@@ -17,9 +17,7 @@ Gem::Specification.new do |spec|
17
17
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
18
  spec.require_paths = ["lib"]
19
19
 
20
- spec.add_dependency 'activejob', '~> 4.2'
21
- spec.add_dependency 'activerecord', '~> 4.2'
22
- spec.add_dependency 'activesupport', '~> 4.2'
20
+ spec.add_dependency 'rails', '~> 4.2'
23
21
  spec.add_development_dependency "bundler", "~> 1.8"
24
22
  spec.add_development_dependency "rake", "~> 10.0"
25
23
 
@@ -1,16 +1,44 @@
1
1
  class Chron::Observable::Job < Chron::Job
2
2
  def perform(class_name)
3
3
  Chron.observables_for(class_name).each do |column|
4
- observe_records_for(class_name, column)
4
+ AggregateObservation.new(class_name, column).perform
5
5
  end
6
6
  end
7
7
 
8
8
  private
9
9
 
10
- def observe_records_for(class_name, column)
11
- class_name.constantize
12
- .select(:id).where(column => Chron::POLLING_RANGE.call).find_each do |record|
13
- Chron::Observable::RecordJob.perform_later(class_name, column.to_s, record.id)
10
+ class AggregateObservation
11
+ attr_accessor :observable_class, :column
12
+
13
+ def initialize(class_name, column)
14
+ self.observable_class, self.column = [class_name.constantize, column]
15
+ end
16
+
17
+ def perform
18
+ schedule_record_jobs
19
+ demarcate_observed_records
20
+ end
21
+
22
+ private
23
+
24
+ def schedule_record_jobs
25
+ unobserved_records.find_each do |record|
26
+ Chron::Observable::RecordJob.perform_later(observable_class.to_s, column.to_s, record.id)
27
+ end
28
+ end
29
+
30
+ def unobserved_records
31
+ observable_class
32
+ .where(column => Chron::POLLING_RANGE.call, poller_demarcation => nil)
33
+ .select(:id)
34
+ end
35
+
36
+ def poller_demarcation
37
+ "#{column}__observation_started_at"
38
+ end
39
+
40
+ def demarcate_observed_records
41
+ unobserved_records.update_all poller_demarcation => Time.current
14
42
  end
15
43
  end
16
44
  end
@@ -2,6 +2,7 @@ class Chron::Observable::RecordJob < Chron::Job
2
2
  def perform(class_name, column, id)
3
3
  if record = class_name.constantize.where(id: id).first
4
4
  record.instance_eval &Chron.observation(class_name, column)
5
+ record.update_column "#{column}__observation_completed_at", Time.current
5
6
  end
6
7
  end
7
8
  end
data/lib/chron/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Chron
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chron
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - winfred
@@ -11,35 +11,7 @@ cert_chain: []
11
11
  date: 2015-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: activejob
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '4.2'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '4.2'
27
- - !ruby/object:Gem::Dependency
28
- name: activerecord
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '4.2'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '4.2'
41
- - !ruby/object:Gem::Dependency
42
- name: activesupport
14
+ name: rails
43
15
  requirement: !ruby/object:Gem::Requirement
44
16
  requirements:
45
17
  - - "~>"