hooves 0.1 → 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.
Files changed (3) hide show
  1. data/README.md +14 -0
  2. data/lib/hooves/unicorn.rb +45 -13
  3. metadata +4 -4
data/README.md CHANGED
@@ -6,6 +6,20 @@ Install
6
6
  --------
7
7
  It's a rubygem, you'll want to include it in your Gemfile.
8
8
 
9
+ Usage
10
+ ------
11
+ Just use `rails server`.
12
+
13
+ Config file
14
+ ------------
15
+ Hooves looks for unicorn config files in two locations.
16
+
17
+ First it looks in ~/.hooves. If that file exists then it gets passed to Unicorn as the config file.
18
+
19
+ Second it looks in ./.hooves.
20
+
21
+ We look in ~/ first because you can only pass one config file to Unicorn. If your project has a .hooves file checked in to its root and you want to have a custom config file, that might be a pain. So we look in ~/ first. That might also become a pain if you want to have different configs for different projects. Let me know and we'll find something that works.
22
+
9
23
  Caveats
10
24
  --------
11
25
  * Using this gem monkey patches Rack::Handler.default making Unicorn the default.
@@ -5,19 +5,51 @@ require "rack/chunked"
5
5
  module Hooves
6
6
  # Rack Handler to use Unicorn for Rails::Application.run!
7
7
  module Unicorn
8
- def self.run(app, options={})
9
- options[:listeners] = ["#{options.delete(:Host)}:#{options.delete(:Port)}"]
10
- options[:worker_processes] = 3
11
- $DEBUG = true if options.delete(:debugger)
12
- daemonize = options.delete(:daemonize)
13
-
14
- # :pid option is stronly discouraged except in unicorn config file
15
- uni_options = options.slice(:listeners, :worker_processes)
16
-
17
- if daemonize
18
- ::Unicorn::Launcher.daemonize!(uni_options)
19
- else
20
- ::Unicorn.run(app, uni_options)
8
+ class << self
9
+ def run(app, options={})
10
+ options[:listeners] = ["#{options.delete(:Host)}:#{options.delete(:Port)}"]
11
+ options[:worker_processes] = 3
12
+
13
+ if options.delete(:debugger)
14
+ $DEBUG = true
15
+
16
+ # It's difficult to debug with more than one worker on the go
17
+ options[:worker_processes] = 1
18
+ # The default timeout (30s) doesn't leave much time for debugging
19
+ options[:timeout] = 120
20
+ end
21
+
22
+ daemonize = options.delete(:daemonize)
23
+
24
+ # override any settings that you want in your config file
25
+ options[:config_file] = find_config_file
26
+
27
+ # :pid option is stronly discouraged except in unicorn config file
28
+ uni_options = options.slice(:listeners, :worker_processes, :config_file, :timeout)
29
+
30
+ if daemonize
31
+ ::Unicorn::Launcher.daemonize!(uni_options)
32
+ else
33
+ ::Unicorn.run(app, uni_options)
34
+ end
35
+ end
36
+
37
+ USER_CONFIG = File.expand_path('~/.hooves')
38
+ PROJECT_CONFIG = File.expand_path('./.hooves')
39
+ def find_config_file
40
+ if user_config?
41
+ USER_CONFIG
42
+ elsif project_config?
43
+ PROJECT_CONFIG
44
+ end
45
+ end
46
+
47
+ def user_config?
48
+ File.exist?(USER_CONFIG)
49
+ end
50
+
51
+ def project_config?
52
+ File.exist?(PROJECT_CONFIG)
21
53
  end
22
54
  end
23
55
  end
metadata CHANGED
@@ -1,12 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hooves
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 15
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 1
9
- version: "0.1"
8
+ - 2
9
+ version: "0.2"
10
10
  platform: ruby
11
11
  authors:
12
12
  - Jesse Storimer
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-10-06 00:00:00 -04:00
17
+ date: 2010-10-14 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency