farm 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -7,11 +7,13 @@ Install:
7
7
 
8
8
  gem install farm
9
9
 
10
- Set the environment variables `API_KEY` and `APP_NAME`.
10
+ Set the environment variables `API_KEY` and `APP_NAME` to your Heroku API key and the name of your app on Heroku, respectively.
11
11
 
12
12
  Call with the farm method:
13
13
 
14
14
  Foo.bar #=> Run directly
15
15
  Foo.farm.bar #=> Run in background as one-off Heroku process.
16
16
 
17
+ For local development, set the environment variable `FARM_ENV=local`. This will cause background tasks to be run as local rake tasks, rather than one-off Heroku processes.
18
+
17
19
  Sincere thanks to [https://github.com/collectiveidea/delayed_job](https://github.com/collectiveidea/delayed_job) from which I copied lots of code and functionality.
@@ -5,13 +5,21 @@ require 'yaml'
5
5
  module Farm
6
6
  class Runner
7
7
  def self.run(*args)
8
- @payload_object ||= args.shift[:payload_object]
8
+ @payload_object = args.shift[:payload_object]
9
9
 
10
10
  unless @payload_object.respond_to?(:perform)
11
11
  raise ArgumentError, 'Cannot run items which do not respond to perform'
12
12
  end
13
13
 
14
- Farm::Http.heroku_run CGI.escape(YAML.dump(@payload_object))
14
+ if ENV['FARM_ENV'].to_s.strip == 'local'
15
+ `rake farm:run CMD='#{serialized}'`
16
+ else
17
+ Farm::Http.heroku_run serialized
18
+ end
19
+ end
20
+
21
+ def self.serialized
22
+ CGI.escape(YAML.dump(@payload_object))
15
23
  end
16
24
  end
17
25
  end
@@ -2,7 +2,6 @@ require 'cgi'
2
2
  require 'yaml'
3
3
 
4
4
  namespace :farm do
5
- desc "Farm out a method call."
6
5
  task :run => :environment do
7
6
  puts YAML.load(CGI.unescape(ENV['CMD'])).perform
8
7
  end
@@ -1,3 +1,3 @@
1
1
  module Farm
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: farm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-01-23 00:00:00.000000000Z
12
+ date: 2012-01-24 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &70344061967360 !ruby/object:Gem::Requirement
16
+ requirement: &70177451658440 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70344061967360
24
+ version_requirements: *70177451658440
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70344061966860 !ruby/object:Gem::Requirement
27
+ requirement: &70177451657900 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70344061966860
35
+ version_requirements: *70177451657900
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rest-client
38
- requirement: &70344061966100 !ruby/object:Gem::Requirement
38
+ requirement: &70177451657260 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: 1.6.7
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70344061966100
46
+ version_requirements: *70177451657260
47
47
  description: Run background jobs as one-off Heroku processes.
48
48
  email: matt.manning@gmail.com
49
49
  executables: []