mongrel2 0.27.0 → 0.28.0
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.tar.gz.sig +0 -0
- data/ChangeLog +20 -1
- data/History.rdoc +10 -0
- data/Manifest.txt +0 -1
- data/bin/m2sh.rb +11 -86
- data/lib/mongrel2.rb +2 -2
- data/lib/mongrel2/config/server.rb +89 -15
- data/spec/mongrel2/config/server_spec.rb +7 -1
- metadata +2 -3
- metadata.gz.sig +0 -0
- data/examples/.env +0 -2
data.tar.gz.sig
CHANGED
Binary file
|
data/ChangeLog
CHANGED
@@ -1,3 +1,22 @@
|
|
1
|
+
2012-07-02 Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
* .hgtags:
|
4
|
+
Added tag v0.27.0 for changeset 8883019d3299
|
5
|
+
[b85c576e5fb1] [tip]
|
6
|
+
|
7
|
+
* .hgsigs:
|
8
|
+
Added signature for changeset 6de3cbe2409c
|
9
|
+
[8883019d3299] [v0.27.0]
|
10
|
+
|
11
|
+
* History.rdoc, lib/mongrel2.rb:
|
12
|
+
Bump the minor version, update history.
|
13
|
+
[6de3cbe2409c]
|
14
|
+
|
15
|
+
* README.rdoc, lib/mongrel2/config.rb, lib/mongrel2/connection.rb,
|
16
|
+
lib/mongrel2/control.rb, lib/mongrel2/testing.rb:
|
17
|
+
Updating API documentation.
|
18
|
+
[cfac9894f2ec]
|
19
|
+
|
1
20
|
2012-06-30 Michael Granger <ged@FaerieMUD.org>
|
2
21
|
|
3
22
|
* Manifest.txt, README.rdoc, bin/m2sh.rb, data/mongrel2/config.rb.in,
|
@@ -6,7 +25,7 @@
|
|
6
25
|
|
7
26
|
Also adding documentation for them to the README, and moved the
|
8
27
|
DATA_DIR constants into mongrel2/constants.
|
9
|
-
[2f2b9b4bc86f]
|
28
|
+
[2f2b9b4bc86f]
|
10
29
|
|
11
30
|
2012-06-27 Michael Granger <ged@FaerieMUD.org>
|
12
31
|
|
data/History.rdoc
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
== v0.28.0 [2012-07-12] Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
- Add Mongrel2::Config::Server pathname methods for the path
|
4
|
+
attributes (#access_log, #pid_file, etc.).
|
5
|
+
- Show the server's URL at startup
|
6
|
+
- Finish Config::Server API docs and add a predicate method for
|
7
|
+
use_ssl
|
8
|
+
- Remove shell mode from m2sh.rb.
|
9
|
+
|
10
|
+
|
1
11
|
== v0.27.0 [2012-07-02] Michael Granger <ged@FaerieMUD.org>
|
2
12
|
|
3
13
|
- Adds support for websocket handshake in 'develop' branch.
|
data/Manifest.txt
CHANGED
data/bin/m2sh.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
require 'uri'
|
4
4
|
require 'pathname'
|
5
|
-
require 'shellwords'
|
6
5
|
require 'fileutils'
|
7
6
|
require 'tnetstring'
|
8
7
|
require 'loggability'
|
@@ -23,7 +22,7 @@ require 'mongrel2/config'
|
|
23
22
|
#
|
24
23
|
# [√] load Load a config.
|
25
24
|
# [√] config Alias for load.
|
26
|
-
# [
|
25
|
+
# [-] shell Starts an interactive shell.
|
27
26
|
# [√] access Prints the access log.
|
28
27
|
# [√] servers Lists the servers in a config database.
|
29
28
|
# [√] hosts Lists the hosts in a server.
|
@@ -43,7 +42,8 @@ require 'mongrel2/config'
|
|
43
42
|
# well), so I don't plan to implement that. The 'control' command is more-easily
|
44
43
|
# accessed via pry+Mongrel2::Control, so I'm not going to implement that, either.
|
45
44
|
# Everything else should be analagous to (or better than) the m2sh that comes with
|
46
|
-
# mongrel2.
|
45
|
+
# mongrel2. I implemented the 'shell' mode, but I found I never used it, and it
|
46
|
+
# introduced a dependency on the Termios library, so I removed it.
|
47
47
|
#
|
48
48
|
class Mongrel2::M2SHCommand
|
49
49
|
extend ::Sysexits,
|
@@ -67,15 +67,9 @@ class Mongrel2::M2SHCommand
|
|
67
67
|
end
|
68
68
|
|
69
69
|
|
70
|
-
# Path to the default history file for 'shell' mode
|
71
|
-
HISTORY_FILE = Pathname( "~/.m2shrb.history" )
|
72
|
-
|
73
70
|
# Number of items to store in history by default
|
74
71
|
DEFAULT_HISTORY_SIZE = 100
|
75
72
|
|
76
|
-
# The prompt the 'shell' mode should show
|
77
|
-
PROMPT = 'mongrel2> '
|
78
|
-
|
79
73
|
|
80
74
|
# Class instance variables
|
81
75
|
@command_help = Hash.new {|h,k| h[k] = { :desc => nil, :usage => ''} }
|
@@ -213,7 +207,6 @@ class Mongrel2::M2SHCommand
|
|
213
207
|
def initialize( options )
|
214
208
|
Loggability.format_as( :color ) if $stderr.tty?
|
215
209
|
@options = options
|
216
|
-
@shellmode = false
|
217
210
|
|
218
211
|
if @options.debug
|
219
212
|
$DEBUG = true
|
@@ -234,9 +227,6 @@ class Mongrel2::M2SHCommand
|
|
234
227
|
# The Trollop options hash the command will read its configuration from
|
235
228
|
attr_reader :options
|
236
229
|
|
237
|
-
# True if running in shell mode
|
238
|
-
attr_reader :shellmode
|
239
|
-
|
240
230
|
|
241
231
|
# Delegate the instance #prompt method to the class method instead
|
242
232
|
define_method( :prompt, &self.method(:prompt) )
|
@@ -244,7 +234,7 @@ class Mongrel2::M2SHCommand
|
|
244
234
|
|
245
235
|
### Run the command with the specified +command+ and +args+.
|
246
236
|
def run( command, *args )
|
247
|
-
command ||= '
|
237
|
+
command ||= 'help'
|
248
238
|
cmd_method = nil
|
249
239
|
|
250
240
|
begin
|
@@ -330,71 +320,6 @@ class Mongrel2::M2SHCommand
|
|
330
320
|
help :init, "Initialize a new empty config database."
|
331
321
|
|
332
322
|
|
333
|
-
### The 'shell' command.
|
334
|
-
def shell_command( * )
|
335
|
-
require 'readline'
|
336
|
-
require 'termios'
|
337
|
-
require 'shellwords'
|
338
|
-
|
339
|
-
term = Termios.getattr( $stdin )
|
340
|
-
@shellmode = true
|
341
|
-
|
342
|
-
# Set up the completion callback
|
343
|
-
# self.setup_completion
|
344
|
-
|
345
|
-
# Load saved command-line history
|
346
|
-
self.read_history
|
347
|
-
|
348
|
-
# Run until something sets the quit flag
|
349
|
-
quitting = false
|
350
|
-
until quitting
|
351
|
-
$stderr.puts
|
352
|
-
input = Readline.readline( PROMPT, true )
|
353
|
-
self.log.debug "Input is: %p" % [ input ]
|
354
|
-
|
355
|
-
# EOL makes the shell quit
|
356
|
-
if input.nil?
|
357
|
-
self.log.debug "EOL: setting quit flag"
|
358
|
-
quitting = true
|
359
|
-
|
360
|
-
# Blank input -- just reprompt
|
361
|
-
elsif input == ''
|
362
|
-
self.log.debug "No command. Re-displaying the prompt."
|
363
|
-
|
364
|
-
# Parse everything else into command + args
|
365
|
-
else
|
366
|
-
self.log.debug "Dispatching input: %p" % [ input ]
|
367
|
-
command, *args = Shellwords.split( input )
|
368
|
-
|
369
|
-
# Don't allow recursive shells
|
370
|
-
if command == 'shell'
|
371
|
-
error "Already in a shell."
|
372
|
-
next
|
373
|
-
end
|
374
|
-
|
375
|
-
begin
|
376
|
-
self.run( command, *args )
|
377
|
-
rescue => err
|
378
|
-
error "%p: %s" % [ err.class, err.message ]
|
379
|
-
err.backtrace.each do |frame|
|
380
|
-
self.log.debug " " + frame
|
381
|
-
end
|
382
|
-
end
|
383
|
-
end
|
384
|
-
end
|
385
|
-
|
386
|
-
message "\nSaving history...\n"
|
387
|
-
self.save_history
|
388
|
-
|
389
|
-
message "done."
|
390
|
-
|
391
|
-
ensure
|
392
|
-
@shellmode = false
|
393
|
-
Termios.tcsetattr( $stdin, Termios::TCSANOW, term )
|
394
|
-
end
|
395
|
-
help :shell, "Start the program in interactive mode."
|
396
|
-
|
397
|
-
|
398
323
|
### The 'access' command
|
399
324
|
def access_command( logfile='logs/access.log', * )
|
400
325
|
# 1$ 2$ 3$ 4$ 5$ 6$ 7$ 8$ 9$
|
@@ -511,16 +436,16 @@ class Mongrel2::M2SHCommand
|
|
511
436
|
server.save
|
512
437
|
end
|
513
438
|
|
514
|
-
# Run the command, waiting for it to finish if invoked from shell mode, or
|
515
|
-
# execing it if not.
|
516
439
|
cmd = [ mongrel2, Mongrel2::Config.dbname.to_s, server.uuid ]
|
517
440
|
cmd.unshift( 'sudo' ) if self.options.sudo
|
518
441
|
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
442
|
+
url = "http%s://%s:%d" % [
|
443
|
+
server.use_ssl? ? 's' : '',
|
444
|
+
server.bind_addr,
|
445
|
+
server.port,
|
446
|
+
]
|
447
|
+
header "Starting mongrel2 at: #{url}"
|
448
|
+
exec( *cmd )
|
524
449
|
end
|
525
450
|
help :start, "Starts a server."
|
526
451
|
usage :start, <<-END_USAGE
|
data/lib/mongrel2.rb
CHANGED
@@ -20,10 +20,10 @@ module Mongrel2
|
|
20
20
|
abort "\n\n>>> Mongrel2 requires Ruby 1.9.2 or later. <<<\n\n" if RUBY_VERSION < '1.9.2'
|
21
21
|
|
22
22
|
# Library version constant
|
23
|
-
VERSION = '0.
|
23
|
+
VERSION = '0.28.0'
|
24
24
|
|
25
25
|
# Version-control revision constant
|
26
|
-
REVISION = %q$Revision:
|
26
|
+
REVISION = %q$Revision: 511f5e29f0a0 $
|
27
27
|
|
28
28
|
|
29
29
|
require 'mongrel2/constants'
|
@@ -25,6 +25,95 @@ class Mongrel2::Config::Server < Mongrel2::Config( :server )
|
|
25
25
|
# port INTEGER,
|
26
26
|
# use_ssl INTEGER default 0);
|
27
27
|
|
28
|
+
##
|
29
|
+
# :method: uuid
|
30
|
+
# Get the server identifier, which is typically a UUID, but can
|
31
|
+
# in reality be any string of alphanumeric characters and dashes.
|
32
|
+
|
33
|
+
##
|
34
|
+
# :method: uuid=( newuuid )
|
35
|
+
# Set the server identifier.
|
36
|
+
|
37
|
+
##
|
38
|
+
# :method: access_log
|
39
|
+
# Get the path to the server's access log as a String.
|
40
|
+
|
41
|
+
### Get the path to the server's access log as a Pathname
|
42
|
+
def access_log_path
|
43
|
+
path = self.access_log or return nil
|
44
|
+
return Pathname( path )
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
##
|
49
|
+
# :method: error_log
|
50
|
+
# Get the path tot he server's error log as a String.
|
51
|
+
|
52
|
+
### Get the path to the server's error log as a Pathname
|
53
|
+
def error_log_path
|
54
|
+
path = self.error_log or return nil
|
55
|
+
return Pathname( path )
|
56
|
+
end
|
57
|
+
|
58
|
+
|
59
|
+
##
|
60
|
+
# :method: chroot
|
61
|
+
# Get the name of the directory Mongrel2 will chroot to if run as root
|
62
|
+
# as a String.
|
63
|
+
|
64
|
+
### Return a Pathname for the server's chroot directory.
|
65
|
+
def chroot_path
|
66
|
+
path = self.chroot or return nil
|
67
|
+
return Pathname( path )
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
##
|
72
|
+
# :method: pid_file
|
73
|
+
# Get the path to the server's PID file as a String.
|
74
|
+
|
75
|
+
### The path to the server's PID file as a Pathname.
|
76
|
+
def pid_file_path
|
77
|
+
path = self.pid_file or return nil
|
78
|
+
return Pathname( path )
|
79
|
+
end
|
80
|
+
|
81
|
+
|
82
|
+
##
|
83
|
+
# :method: default_host
|
84
|
+
# Get the name of the default virtualhost for the server. If none
|
85
|
+
# of the hosts' names (or matching pattern) matches the request's Host:
|
86
|
+
# header, the default_host will be used.
|
87
|
+
|
88
|
+
##
|
89
|
+
# :method: name
|
90
|
+
# The huamn-readable name of the server.
|
91
|
+
|
92
|
+
##
|
93
|
+
# :method: bind_addr
|
94
|
+
# The address to bind to on startup.
|
95
|
+
|
96
|
+
##
|
97
|
+
# :method: port
|
98
|
+
# The port to listen on.
|
99
|
+
|
100
|
+
|
101
|
+
### Returns +true+ if the server uses SSL.
|
102
|
+
def use_ssl?
|
103
|
+
return self.use_ssl.nonzero?
|
104
|
+
end
|
105
|
+
|
106
|
+
|
107
|
+
### If +enabled+, the server will use SSL.
|
108
|
+
def use_ssl=( enabled )
|
109
|
+
if !enabled || enabled == 0
|
110
|
+
super( 0 )
|
111
|
+
else
|
112
|
+
super( 1 )
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
|
28
117
|
#
|
29
118
|
# :section: Associations
|
30
119
|
#
|
@@ -54,12 +143,6 @@ class Mongrel2::Config::Server < Mongrel2::Config( :server )
|
|
54
143
|
# :section: Socket/Pathname Convenience Methods
|
55
144
|
#
|
56
145
|
|
57
|
-
### Return a Pathname for the server's chroot directory.
|
58
|
-
def chroot_path
|
59
|
-
return Pathname( self.chroot )
|
60
|
-
end
|
61
|
-
|
62
|
-
|
63
146
|
### Return the URI for its control socket.
|
64
147
|
def control_socket_uri
|
65
148
|
# Find the control socket relative to the server's chroot
|
@@ -84,15 +167,6 @@ class Mongrel2::Config::Server < Mongrel2::Config( :server )
|
|
84
167
|
end
|
85
168
|
|
86
169
|
|
87
|
-
### Return a Pathname for the server's PID file with its chroot directory prepended.
|
88
|
-
def pid_file_path
|
89
|
-
pidfile = self.pid_file
|
90
|
-
pidfile.slice!( 0, 1 ) if pidfile.start_with?( '/' )
|
91
|
-
|
92
|
-
return self.chroot_path + pidfile
|
93
|
-
end
|
94
|
-
|
95
|
-
|
96
170
|
#
|
97
171
|
# :section: Validation Callbacks
|
98
172
|
#
|
@@ -102,7 +102,13 @@ describe Mongrel2::Config::Server do
|
|
102
102
|
it "knows what the Pathname of its PID file is" do
|
103
103
|
pidfile = @server.pid_file_path
|
104
104
|
pidfile.should be_a( Pathname )
|
105
|
-
pidfile.to_s.should == '/
|
105
|
+
pidfile.to_s.should == '/run/mongrel2.pid'
|
106
|
+
end
|
107
|
+
|
108
|
+
it "has a predicate that understands the use_ssl value" do
|
109
|
+
@server.use_ssl.should be_false()
|
110
|
+
@server.use_ssl = true
|
111
|
+
@server.use_ssl.should be_true()
|
106
112
|
end
|
107
113
|
|
108
114
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongrel2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.28.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -36,7 +36,7 @@ cert_chain:
|
|
36
36
|
YUhDS0xaZFNLai9SSHVUT3QrZ2JsUmV4OEZBaDhOZUEKY21saFhlNDZwWk5K
|
37
37
|
Z1dLYnhaYWg4NWpJang5NWhSOHZPSStOQU01aUg5a09xSzEzRHJ4YWNUS1Bo
|
38
38
|
cWo1UGp3RgotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
|
39
|
-
date: 2012-07-
|
39
|
+
date: 2012-07-12 00:00:00.000000000 Z
|
40
40
|
dependencies:
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: nokogiri
|
@@ -334,7 +334,6 @@ files:
|
|
334
334
|
- data/mongrel2/js/websock-test.js
|
335
335
|
- data/mongrel2/mimetypes.sql
|
336
336
|
- data/mongrel2/websock-test.html
|
337
|
-
- examples/.env
|
338
337
|
- examples/Procfile
|
339
338
|
- examples/README.txt
|
340
339
|
- examples/async-upload.rb
|
metadata.gz.sig
CHANGED
Binary file
|
data/examples/.env
DELETED