fanforce-workers 0.0.2

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 ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NTQyY2U4MGNlYjYyYzU2ZDJhOTlmMzBlZjVjZmIzMzRlZjZmMzI5Yg==
5
+ data.tar.gz: !binary |-
6
+ YjhiODkwNDBlYTVlMTIwODU3ZjExZjA4YTg1ZmFiOWNlYjg1ZGI4Yw==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ NzU2N2VkNTBmNjlhNmQ3OGVmYWUwOGFjOWNlMDE2ODAwNDU3NjA5NmZlNWMx
10
+ Nzk4Yjc2OWEzMDVkNjU1NTJjZGYzNGNhYjY1ZDAxNWYyODg2MzNlMWNhMmQx
11
+ OTdlYmIxMmFkMjA4Y2YyMWQxNmI4ZjAyZjU0OGY3NmVkNmRhNDQ=
12
+ data.tar.gz: !binary |-
13
+ MmJhZGE3OTVjZWI3Zjc4Mjg5N2Q4ZWQzMjE5M2U1Y2Q4MDVkY2Y3NDJlNDIz
14
+ MmQyYWQ0YzZhZDI0ZTU3NDAzMjQzMGE0YWJlOWJkMmUxYWYxYjU4NWE2Y2E0
15
+ NTdiMDZmYWY0NjQ1ZGFhM2IxM2I4Y2JjZThmNWY0ZTU2NDhlMmU=
data/.gitignore ADDED
@@ -0,0 +1,22 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ coverage
6
+ InstalledFiles
7
+ lib/bundler/man
8
+ pkg
9
+ rdoc
10
+ spec/reports
11
+ test/tmp
12
+ test/version_tmp
13
+ tmp
14
+
15
+ # YARD artifacts
16
+ .yardoc
17
+ _yardoc
18
+ doc/
19
+ .DS_Store
20
+ .idea/
21
+ .idea/*
22
+ Gemfile.lock
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
data/README.md ADDED
@@ -0,0 +1,4 @@
1
+ fanforce-workers
2
+ ==
3
+
4
+ Fanforce workers library used by plugins to connect with iron_mg and iron_worker_ng
data/Rakefile ADDED
@@ -0,0 +1,16 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+ require 'fileutils'
4
+ include FileUtils
5
+
6
+ # Default Rake task is compile
7
+ #task :default => :compile
8
+
9
+ ########################################################################
10
+
11
+ Rake::TestTask.new do |t|
12
+ t.libs.push "lib"
13
+ t.libs.push "test"
14
+ t.pattern = 'test/**/*_test.rb'
15
+ t.verbose = false
16
+ end
@@ -0,0 +1,21 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'fanforce/workers/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = 'fanforce-workers'
8
+ gem.version = Fanforce::Workers::VERSION
9
+ gem.date = '2012-10-19'
10
+ gem.summary = %q{Fanforce workers library used by various Fanforce addons.}
11
+ gem.authors = ['Caleb Clark']
12
+ gem.email = ['cclark@fanforce.com']
13
+ gem.homepage = 'http://github.com/fanforce/fanforce-workers'
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
17
+ gem.require_paths = ['lib']
18
+
19
+ gem.add_runtime_dependency 'iron_mq', '~> 4'
20
+ gem.add_runtime_dependency 'fanforce-api'
21
+ end
@@ -0,0 +1,12 @@
1
+ class Fanforce::Workers::Iron
2
+
3
+ def initialize(opts={})
4
+ @iron_mq = IronMQ::Client.new(:token => opts[:token] || ENV['IRON_TOKEN'], :project_id => opts[:project_id] || ENV['IRON_PROJECT_ID'])
5
+ end
6
+
7
+ def queue(queue_id, payload)
8
+ #payload = (payload.is_a?(Hash) or payload.is_a?(Array)) ? payload.to_json : payload.to_s
9
+ @iron_mq.queue(queue_id).post(payload)
10
+ end
11
+
12
+ end
@@ -0,0 +1,5 @@
1
+ class Fanforce
2
+ module Workers
3
+ VERSION = '0.0.2'
4
+ end
5
+ end
@@ -0,0 +1,45 @@
1
+ class Fanforce::Worker
2
+
3
+ def self.run(init_params, &worker_code)
4
+ self.new(init_params, &worker_code)
5
+ end
6
+
7
+ def initialize(init_params, &worker_code)
8
+ require_dependencies
9
+ run_validations
10
+
11
+ @init_params = init_params
12
+ @worker_code = worker_code
13
+ @iron_mq.queue(init_params['worker_id']).poll do |msg|
14
+ run_worker(msg, 0)
15
+ end
16
+ end
17
+
18
+
19
+ def require_dependencies
20
+ require '.pluginenv'
21
+ require 'fanforce/api'
22
+ require 'iron_mq'
23
+ end
24
+
25
+ def run_validations
26
+
27
+ end
28
+
29
+ def iron_mq
30
+ @iron_mq ||= IronMQ::Client.new
31
+ end
32
+
33
+ def run_worker(msg, retries)
34
+ params = Fanforce.decode_json(msg.body)
35
+ @worker_code.call(params, retries)
36
+ rescue => e
37
+ params = (params.blank?) ? {original_body: msg.body} : {original_params: params}
38
+ params[:retries] = retries + 1
39
+ params[:error_message] = e.message
40
+ params[:error_backtrace] = e.backtrace
41
+ Fanforce::Workers::Iron.queue "#{@init_params['worker_id']}-RETRIES", params
42
+ raise
43
+ end
44
+
45
+ end
@@ -0,0 +1,12 @@
1
+ require 'iron_mq'
2
+
3
+ module Fanforce::Workers
4
+ extend Fanforce::Workers
5
+ def self.included(base) base.extend(self) end
6
+
7
+ def iron(opts={})
8
+ require_relative 'iron'
9
+ @iron ||= Fanforce::Workers::Iron.new(opts)
10
+ end
11
+
12
+ end
@@ -0,0 +1,6 @@
1
+ class Fanforce
2
+ require_relative 'workers/version'
3
+ require_relative 'workers/workers'
4
+ require_relative 'workers/worker'
5
+ end
6
+
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fanforce-workers
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Caleb Clark
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2012-10-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: iron_mq
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: fanforce-api
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description:
42
+ email:
43
+ - cclark@fanforce.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - .gitignore
49
+ - Gemfile
50
+ - README.md
51
+ - Rakefile
52
+ - fanforce-workers.gemspec
53
+ - lib/fanforce/workers.rb
54
+ - lib/fanforce/workers/iron.rb
55
+ - lib/fanforce/workers/version.rb
56
+ - lib/fanforce/workers/worker.rb
57
+ - lib/fanforce/workers/workers.rb
58
+ homepage: http://github.com/fanforce/fanforce-workers
59
+ licenses: []
60
+ metadata: {}
61
+ post_install_message:
62
+ rdoc_options: []
63
+ require_paths:
64
+ - lib
65
+ required_ruby_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ! '>='
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ requirements: []
76
+ rubyforge_project:
77
+ rubygems_version: 2.0.3
78
+ signing_key:
79
+ specification_version: 4
80
+ summary: Fanforce workers library used by various Fanforce addons.
81
+ test_files: []