timberline-rails 0.3.0 → 0.4.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2654b1a797bfa7d8573546111e8feb64eab21465
4
- data.tar.gz: 6b1149c50d8e950e5fd7c430f7af50a674e07e2e
3
+ metadata.gz: b996ea83143cd888bf6275b1c261d736f375dad9
4
+ data.tar.gz: 9067b5d3572fa7793ffa65e055e55e919b0da236
5
5
  SHA512:
6
- metadata.gz: 78c515559d34b015c0a5d4c6e37dd8729b5f50b2e7207d66bd35f2fd7e9b08c2f996667da38d01c677a642c52a89ca66d919beaa471166743d60b86e02303cf4
7
- data.tar.gz: 412bf508b44c3b0a614a7b988c67dd10af5707faa6890dd108838db4c933234d80e15e6904a620056af4bfb03bf9cbc66e33d01df4c4cc6f5a3bc88884f1b1a6
6
+ metadata.gz: 06c3924792b9e3d270f20e5a17bc6664bbfc803efa5a81a8ee379f0dec6f43684d3700fc8ec5c3ecfc0a4d447c8ea145d11131692177f03d8199d413de0a1a9b
7
+ data.tar.gz: 897bc71be003ffd398dcdb037ea9c60d2261ee6ef63ee2e1dbd7e566ac3c9cfb05f10a55c0b7622028a39513965a370b863ae38f17e42c86f3d314d777b9c259
data/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ 0.4.0
2
+ - Upgrade to Timberline v0.8.5
3
+ - Add ActiveJob adapter and Timberline::Rails::ActiveJobWorker
4
+ 0.3.0
5
+ - Upgrade to Timberline v0.8.0
1
6
  0.2.0
2
7
  - Add Timberline::Rails::ActiveRecord and Timberline::Rails::ActiveRecordWorker support
3
8
  - Upgrade to Timberline v0.7.0 with Worker support
data/Gemfile.lock CHANGED
@@ -1,26 +1,40 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- timberline-rails (0.2.0)
5
- timberline (~> 0.7.0)
4
+ timberline-rails (0.4.0)
5
+ timberline (~> 0.8.5)
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
+ activejob (4.2.4)
11
+ activesupport (= 4.2.4)
12
+ globalid (>= 0.3.0)
13
+ activesupport (4.2.4)
14
+ i18n (~> 0.7)
15
+ json (~> 1.7, >= 1.7.7)
16
+ minitest (~> 5.1)
17
+ thread_safe (~> 0.3, >= 0.3.4)
18
+ tzinfo (~> 1.1)
10
19
  coderay (1.1.0)
11
- daemons (1.1.9)
20
+ daemons (1.2.3)
12
21
  diff-lcs (1.2.5)
22
+ globalid (0.3.6)
23
+ activesupport (>= 4.1.0)
24
+ i18n (0.7.0)
25
+ json (1.8.3)
13
26
  method_source (0.8.2)
27
+ minitest (5.8.2)
14
28
  pry (0.9.12.6)
15
29
  coderay (~> 1.0)
16
30
  method_source (~> 0.8)
17
31
  slop (~> 3.4)
18
32
  rake (10.3.2)
19
- redis (3.0.7)
33
+ redis (3.2.2)
20
34
  redis-expiring-set (0.1.2)
21
35
  redis
22
- redis-namespace (1.4.1)
23
- redis (~> 3.0.4)
36
+ redis-namespace (1.5.2)
37
+ redis (~> 3.0, >= 3.0.4)
24
38
  rspec (3.0.0)
25
39
  rspec-core (~> 3.0.0)
26
40
  rspec-expectations (~> 3.0.0)
@@ -34,21 +48,28 @@ GEM
34
48
  rspec-support (~> 3.0.0)
35
49
  rspec-support (3.0.0)
36
50
  slop (3.5.0)
37
- timberline (0.7.0)
51
+ thread_safe (0.3.5)
52
+ timberline (0.8.5)
38
53
  daemons
39
54
  redis
40
55
  redis-expiring-set
41
56
  redis-namespace
42
57
  trollop
43
- trollop (2.0)
58
+ trollop (2.1.2)
59
+ tzinfo (1.2.2)
60
+ thread_safe (~> 0.1)
44
61
  yard (0.8.7.4)
45
62
 
46
63
  PLATFORMS
47
64
  ruby
48
65
 
49
66
  DEPENDENCIES
67
+ activejob
50
68
  pry
51
69
  rake
52
70
  rspec (~> 3.0.0)
53
71
  timberline-rails!
54
72
  yard
73
+
74
+ BUNDLED WITH
75
+ 1.10.6
data/README.markdown CHANGED
@@ -19,10 +19,26 @@ configuration in code using `Timberline.configure`. Timberline-Rails adds in
19
19
  automatic detection for a config file at `config/timberline.yml` in your Rails
20
20
  app, complete with environment support (just like database.yml).
21
21
 
22
- ### Timberline::Rails::ActiveRecord and Timberline::Rails::ActiveRecordWorker
22
+ ### ActiveJob Integration
23
+
24
+ Timberline-Rails now includes an adapter and worker so you can use Timberline as
25
+ ActiveJob's queueing backend.
26
+
27
+ To use, set Timberline as the queue adapter in `config/application.rb` or in one
28
+ of your environment's configs:
29
+
30
+ config.active_job.queue_adapter = :timberline
31
+
32
+ Then, run a worker for each queue that you use.
33
+
34
+ # run this script with rails/runner or use some other means to load your Rails environment
35
+
36
+ Timberline::Rails::ActiveJobWorker.new.watch("default")
37
+
38
+ ### ActiveRecord Integration
23
39
 
24
40
  In order to make running jobs in the background as easy as possible,
25
- Timberline-Rails comes with two new items to help:
41
+ Timberline-Rails comes with two items to help:
26
42
 
27
43
  #### Timberline::Rails::ActiveRecord
28
44
 
@@ -52,7 +68,7 @@ To continue our example from above:
52
68
 
53
69
  # run this script with rails/runner or use some other means to load your Rails environment
54
70
 
55
- Timberline::Rails::ActiveRecordWorker.new("user_jobs").watch
71
+ Timberline::Rails::ActiveRecordWorker.new.watch("user_jobs")
56
72
 
57
73
  ...and items will be pulled off of the `user_jobs` queue and processed (in this case,
58
74
  we'll look up the appropriate User record and call `#send_some_email` on it directly).=
@@ -0,0 +1,18 @@
1
+ module ActiveJob
2
+ module QueueAdapters
3
+ # To use Timberline set the queue_adapter config to +:timberline+.
4
+ #
5
+ # Rails.application.config.active_job.queue_adapter = :timberline
6
+ class TimberlineAdapter
7
+ class << self
8
+ def enqueue(job)
9
+ Timberline.push job.queue_name, job.serialize
10
+ end
11
+
12
+ def enqueue_at(job, timestamp)
13
+ raise NotImplementedError
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,13 @@
1
+ class Timberline
2
+ class Rails
3
+ class ActiveJobWorker < ::Timberline::Worker
4
+ def process_item(item)
5
+ ActiveJob::Base.execute item.contents
6
+ rescue StandardError => e
7
+ item.error_reason = e.message
8
+ item.error_backtrace = e.backtrace
9
+ error_item(item)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,6 +1,6 @@
1
1
  class Timberline
2
2
  class Rails
3
3
  # The canonical version of Timberline-Rails
4
- VERSION = "0.3.0"
4
+ VERSION = "0.4.0"
5
5
  end
6
6
  end
@@ -1,8 +1,10 @@
1
1
  require 'timberline'
2
2
  require 'timberline/rails/version'
3
3
  require 'timberline/rails/exceptions'
4
+ require 'timberline/rails/active_job_worker'
4
5
  require 'timberline/rails/active_record'
5
6
  require 'timberline/rails/active_record_worker'
7
+ require 'active_job/queue_adapters/timberline_adapter'
6
8
 
7
9
  class Timberline
8
10
  # Re-open the Timberline::Config class from Timberline
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ describe Timberline::Rails::ActiveJobWorker do
4
+ subject do
5
+ Timberline::Rails::ActiveJobWorker.new.tap do |worker|
6
+ worker.instance_variable_set :@queue, queue
7
+ end
8
+ end
9
+ let(:queue) { Timberline.queue("fake_queue") }
10
+ let(:item) do
11
+ queue.push({ job_class: "SpecSupport::FakeRails::FakeJob",
12
+ arguments: [1, 2, 3] })
13
+ queue.pop
14
+ end
15
+
16
+ describe "#process_item" do
17
+ it "uses ActiveJob to execute the item contents" do
18
+ expect(ActiveJob::Base).to receive(:execute).with(item.contents)
19
+ subject.process_item(item)
20
+ end
21
+
22
+ context "If the method raises an exception of its own" do
23
+ before do
24
+ allow_any_instance_of(SpecSupport::FakeRails::FakeJob).to receive(:perform) { raise "This doesn't work" }
25
+ end
26
+
27
+ it "errors the item" do
28
+ expect(subject).to receive(:error_item).with(item)
29
+ subject.process_item(item)
30
+ end
31
+
32
+ it "provides an error_reason" do
33
+ expect { subject.process_item(item) }.to raise_error(Timberline::ItemErrored)
34
+ expect(item.error_reason).to include("This doesn't work")
35
+ end
36
+
37
+ it "provides an error_backtrace" do
38
+ expect { subject.process_item(item) }.to raise_error(Timberline::ItemErrored)
39
+ expect(item.error_backtrace).to be_a Array
40
+ end
41
+ end
42
+ end
43
+ end
@@ -1,7 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Timberline::Rails::ActiveRecordWorker do
4
- subject { Timberline::Rails::ActiveRecordWorker.new("fake_queue") }
4
+ subject do
5
+ Timberline::Rails::ActiveRecordWorker.new.tap do |worker|
6
+ worker.instance_variable_set :@queue, queue
7
+ end
8
+ end
5
9
  let(:queue) { Timberline.queue("fake_queue") }
6
10
  let(:item) do
7
11
  queue.push({ model_name: "SpecSupport::FakeRails::FakeModel",
@@ -1,3 +1,8 @@
1
+ require 'active_job'
2
+
3
+ ActiveJob::Base.logger = nil
4
+ ActiveJob::Base.queue_adapter = :timberline
5
+
1
6
  module SpecSupport
2
7
  module FakeRails
3
8
  def self.create_fake_env
@@ -14,6 +19,13 @@ module SpecSupport
14
19
  Object.send(:remove_const, :Rails)
15
20
  end
16
21
 
22
+ class FakeJob < ActiveJob::Base
23
+ queue_as :fake_queue
24
+
25
+ def perform(*args)
26
+ end
27
+ end
28
+
17
29
  class FakeModel
18
30
  include Timberline::Rails::ActiveRecord
19
31
 
@@ -18,8 +18,9 @@ Gem::Specification.new do |s|
18
18
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
19
  s.require_paths = ["lib"]
20
20
 
21
- s.add_runtime_dependency "timberline", "~> 0.8.0"
21
+ s.add_runtime_dependency "timberline", "~> 0.8.5"
22
22
 
23
+ s.add_development_dependency "activejob"
23
24
  s.add_development_dependency "rake"
24
25
  s.add_development_dependency "rspec", '~> 3.0.0'
25
26
  s.add_development_dependency "pry"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: timberline-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tommy Morgan
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-26 00:00:00.000000000 Z
11
+ date: 2015-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: timberline
@@ -16,14 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.8.0
19
+ version: 0.8.5
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.8.0
26
+ version: 0.8.5
27
+ - !ruby/object:Gem::Dependency
28
+ name: activejob
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -98,13 +112,16 @@ files:
98
112
  - Gemfile.lock
99
113
  - README.markdown
100
114
  - Rakefile
115
+ - lib/active_job/queue_adapters/timberline_adapter.rb
101
116
  - lib/timberline-rails.rb
117
+ - lib/timberline/rails/active_job_worker.rb
102
118
  - lib/timberline/rails/active_record.rb
103
119
  - lib/timberline/rails/active_record_worker.rb
104
120
  - lib/timberline/rails/exceptions.rb
105
121
  - lib/timberline/rails/version.rb
106
122
  - spec/fake_rails/config/timberline.yml
107
123
  - spec/lib/timberline/config_spec.rb
124
+ - spec/lib/timberline/rails/active_job_worker_spec.rb
108
125
  - spec/lib/timberline/rails/active_record_spec.rb
109
126
  - spec/lib/timberline/rails/active_record_worker_spec.rb
110
127
  - spec/spec_helper.rb
@@ -130,9 +147,17 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
147
  version: '0'
131
148
  requirements: []
132
149
  rubyforge_project: timberline-rails
133
- rubygems_version: 2.2.2
150
+ rubygems_version: 2.5.0
134
151
  signing_key:
135
152
  specification_version: 4
136
153
  summary: Rails logic and niceties for the Timberline queueing system.
137
- test_files: []
154
+ test_files:
155
+ - spec/fake_rails/config/timberline.yml
156
+ - spec/lib/timberline/config_spec.rb
157
+ - spec/lib/timberline/rails/active_job_worker_spec.rb
158
+ - spec/lib/timberline/rails/active_record_spec.rb
159
+ - spec/lib/timberline/rails/active_record_worker_spec.rb
160
+ - spec/spec_helper.rb
161
+ - spec/support/fake_rails.rb
162
+ - spec/support/timberline_reset.rb
138
163
  has_rdoc: