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 +4 -4
- data/CHANGELOG +5 -0
- data/Gemfile.lock +29 -8
- data/README.markdown +19 -3
- data/lib/active_job/queue_adapters/timberline_adapter.rb +18 -0
- data/lib/timberline/rails/active_job_worker.rb +13 -0
- data/lib/timberline/rails/version.rb +1 -1
- data/lib/timberline-rails.rb +2 -0
- data/spec/lib/timberline/rails/active_job_worker_spec.rb +43 -0
- data/spec/lib/timberline/rails/active_record_worker_spec.rb +5 -1
- data/spec/support/fake_rails.rb +12 -0
- data/timberline-rails.gemspec +2 -1
- metadata +31 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b996ea83143cd888bf6275b1c261d736f375dad9
|
4
|
+
data.tar.gz: 9067b5d3572fa7793ffa65e055e55e919b0da236
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
5
|
-
timberline (~> 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.
|
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.
|
33
|
+
redis (3.2.2)
|
20
34
|
redis-expiring-set (0.1.2)
|
21
35
|
redis
|
22
|
-
redis-namespace (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
|
-
|
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.
|
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
|
-
###
|
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
|
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")
|
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
|
data/lib/timberline-rails.rb
CHANGED
@@ -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
|
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",
|
data/spec/support/fake_rails.rb
CHANGED
@@ -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
|
|
data/timberline-rails.gemspec
CHANGED
@@ -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.
|
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.
|
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:
|
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.
|
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.
|
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.
|
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:
|