golden_brindle 0.0.5 → 0.0.6
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.
- data/golden_brindle.gemspec +2 -2
- data/lib/golden_brindle/const.rb +1 -1
- data/lib/golden_brindle/start.rb +41 -32
- data/test/test_golden_brindle.rb +1 -1
- metadata +4 -4
data/golden_brindle.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{golden_brindle}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.6"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Alexander Simonov"]
|
12
|
-
s.date = %q{2010-
|
12
|
+
s.date = %q{2010-09-05}
|
13
13
|
s.default_executable = %q{golden_brindle}
|
14
14
|
s.description = %q{Unicorn HTTP server clustering tool like mongrel_cluster for Mongrel}
|
15
15
|
s.email = %q{alex@simonov.me}
|
data/lib/golden_brindle/const.rb
CHANGED
data/lib/golden_brindle/start.rb
CHANGED
@@ -32,7 +32,7 @@ module Brindle
|
|
32
32
|
# Rails 3 dispatcher support
|
33
33
|
# Code from unicorn_rails script
|
34
34
|
#
|
35
|
-
def rails_dispatcher
|
35
|
+
def self.rails_dispatcher
|
36
36
|
if ::Rails::VERSION::MAJOR >= 3 && ::File.exist?('config/application.rb')
|
37
37
|
if ::File.read('config/application.rb') =~ /^module\s+([\w:]+)\s*$/
|
38
38
|
app_module = Object.const_get($1)
|
@@ -66,11 +66,11 @@ module Brindle
|
|
66
66
|
defined?(::Rails::VERSION::STRING) or
|
67
67
|
abort "Rails::VERSION::STRING not defined by config/{boot,environment}"
|
68
68
|
# it seems Rails >=2.2 support Rack, but only >=2.3 requires it
|
69
|
-
old_rails =
|
70
|
-
|
69
|
+
old_rails = case ::Rails::VERSION::MAJOR
|
70
|
+
when 0, 1 then true
|
71
|
+
when 2 then Rails::VERSION::MINOR < 3 ? true : false
|
71
72
|
else
|
72
|
-
|
73
|
-
true
|
73
|
+
false
|
74
74
|
end
|
75
75
|
|
76
76
|
Rack::Builder.new do
|
@@ -95,7 +95,7 @@ module Brindle
|
|
95
95
|
unless defined?(ActionDispatch::Static)
|
96
96
|
use Rails::Rack::Static
|
97
97
|
end
|
98
|
-
run rails_dispatcher
|
98
|
+
run Brindle::Start.rails_dispatcher
|
99
99
|
end
|
100
100
|
end
|
101
101
|
end.to_app
|
@@ -128,12 +128,14 @@ module Brindle
|
|
128
128
|
def run
|
129
129
|
# Change there to start, then we'll have to come back after daemonize
|
130
130
|
Dir.chdir(@cwd)
|
131
|
-
options = {
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
131
|
+
options = {
|
132
|
+
:listeners => [],
|
133
|
+
:pid => @pid_file,
|
134
|
+
:config_file => @config_script,
|
135
|
+
:worker_processes => @workers.to_i,
|
136
|
+
:working_directory => @cwd,
|
137
|
+
:timeout => @timeout
|
138
|
+
}
|
137
139
|
# set user via Unicorn options. If we don't set group - then use only user
|
138
140
|
options[:user] = @user unless @user.nil?
|
139
141
|
options[:stderr_path] = options[:stdout_path] = @log_file if @daemon
|
@@ -148,34 +150,41 @@ module Brindle
|
|
148
150
|
defined?(ActiveRecord::Base) and
|
149
151
|
ActiveRecord::Base.establish_connection
|
150
152
|
# trying to change user and group
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
end
|
153
|
+
begin
|
154
|
+
# check if something not set in config or cli
|
155
|
+
unless @user.nil? || @group.nil?
|
156
|
+
uid, gid = Process.euid, Process.egid
|
157
|
+
user, group = @user, @group
|
158
|
+
target_uid = Etc.getpwnam(user).uid
|
159
|
+
target_gid = Etc.getgrnam(group).gid
|
160
|
+
worker.tmp.chown(target_uid, target_gid)
|
161
|
+
if uid != target_uid || gid != target_gid
|
162
|
+
Process.initgroups(user, target_gid)
|
163
|
+
Process::GID.change_privilege(target_gid)
|
164
|
+
Process::UID.change_privilege(target_uid)
|
164
165
|
end
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
166
|
+
end
|
167
|
+
rescue => e
|
168
|
+
if ENV['RAILS_ENV'] == 'development'
|
169
|
+
STDERR.puts "couldn't change user, oh well"
|
170
|
+
else
|
171
|
+
raise e
|
171
172
|
end
|
173
|
+
end
|
172
174
|
end
|
173
175
|
options[:before_fork] = lambda do |server, worker|
|
174
176
|
defined?(ActiveRecord::Base) and
|
175
177
|
ActiveRecord::Base.connection.disconnect!
|
176
178
|
# http://rubyenterpriseedition.com/faq.html#adapt_apps_for_cow
|
177
179
|
if GC.respond_to?(:copy_on_write_friendly=)
|
178
|
-
|
180
|
+
GC.copy_on_write_friendly = true
|
181
|
+
end
|
182
|
+
old_pid = "#{server.config[:pid]}.oldbin"
|
183
|
+
if File.exists?(old_pid) && server.pid != old_pid
|
184
|
+
begin
|
185
|
+
Process.kill("QUIT", File.read(old_pid).to_i)
|
186
|
+
rescue Errno::ENOENT, Errno::ESRCH
|
187
|
+
end
|
179
188
|
end
|
180
189
|
end
|
181
190
|
ENV['RAILS_ENV'] = @environment
|
data/test/test_golden_brindle.rb
CHANGED
@@ -2,6 +2,6 @@ require 'helper'
|
|
2
2
|
|
3
3
|
class TestGoldenBrindle < Test::Unit::TestCase
|
4
4
|
should "probably rename this file and start testing for real" do
|
5
|
-
|
5
|
+
flunk "hey buddy, you should probably rename this file and start testing for real"
|
6
6
|
end
|
7
7
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: golden_brindle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 6
|
10
|
+
version: 0.0.6
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Alexander Simonov
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-09-05 00:00:00 +03:00
|
19
19
|
default_executable: golden_brindle
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|