timberline-rails 0.3.0 → 0.4.0

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