merb-core 0.9.13 → 1.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/Rakefile +5 -3
- data/lib/merb-core.rb +84 -41
- data/lib/merb-core/bootloader.rb +71 -60
- data/lib/merb-core/config.rb +31 -17
- data/lib/merb-core/controller/abstract_controller.rb +35 -35
- data/lib/merb-core/controller/exceptions.rb +14 -9
- data/lib/merb-core/controller/merb_controller.rb +22 -20
- data/lib/merb-core/controller/mime.rb +5 -5
- data/lib/merb-core/controller/mixins/authentication.rb +11 -8
- data/lib/merb-core/controller/mixins/conditional_get.rb +7 -7
- data/lib/merb-core/controller/mixins/controller.rb +15 -15
- data/lib/merb-core/controller/mixins/render.rb +16 -16
- data/lib/merb-core/controller/mixins/responder.rb +23 -23
- data/lib/merb-core/controller/template.rb +17 -17
- data/lib/merb-core/core_ext/hash.rb +2 -2
- data/lib/merb-core/core_ext/kernel.rb +19 -18
- data/lib/merb-core/dispatch/cookies.rb +13 -0
- data/lib/merb-core/dispatch/default_exception/default_exception.rb +12 -1
- data/lib/merb-core/dispatch/dispatcher.rb +6 -5
- data/lib/merb-core/dispatch/request.rb +56 -52
- data/lib/merb-core/dispatch/request_parsers.rb +7 -7
- data/lib/merb-core/dispatch/router.rb +14 -14
- data/lib/merb-core/dispatch/router/behavior.rb +31 -31
- data/lib/merb-core/dispatch/router/cached_proc.rb +13 -1
- data/lib/merb-core/dispatch/router/resources.rb +9 -9
- data/lib/merb-core/dispatch/router/route.rb +60 -7
- data/lib/merb-core/dispatch/session.rb +21 -15
- data/lib/merb-core/dispatch/session/container.rb +10 -8
- data/lib/merb-core/dispatch/session/cookie.rb +12 -11
- data/lib/merb-core/dispatch/session/memcached.rb +4 -2
- data/lib/merb-core/dispatch/session/memory.rb +8 -6
- data/lib/merb-core/dispatch/session/store_container.rb +6 -5
- data/lib/merb-core/dispatch/worker.rb +28 -10
- data/lib/merb-core/gem_ext/erubis.rb +4 -2
- data/lib/merb-core/logger.rb +3 -22
- data/lib/merb-core/plugins.rb +5 -5
- data/lib/merb-core/rack.rb +1 -1
- data/lib/merb-core/rack/adapter.rb +5 -1
- data/lib/merb-core/rack/adapter/abstract.rb +15 -10
- data/lib/merb-core/rack/adapter/ebb.rb +4 -2
- data/lib/merb-core/rack/adapter/evented_mongrel.rb +2 -1
- data/lib/merb-core/rack/adapter/fcgi.rb +3 -1
- data/lib/merb-core/rack/adapter/irb.rb +10 -1
- data/lib/merb-core/rack/adapter/mongrel.rb +5 -2
- data/lib/merb-core/rack/adapter/runner.rb +3 -1
- data/lib/merb-core/rack/adapter/swiftiplied_mongrel.rb +2 -1
- data/lib/merb-core/rack/adapter/thin.rb +4 -1
- data/lib/merb-core/rack/adapter/thin_turbo.rb +1 -0
- data/lib/merb-core/rack/adapter/webrick.rb +8 -34
- data/lib/merb-core/rack/application.rb +2 -2
- data/lib/merb-core/rack/handler/mongrel.rb +7 -0
- data/lib/merb-core/rack/helpers.rb +1 -1
- data/lib/merb-core/rack/middleware.rb +7 -1
- data/lib/merb-core/rack/middleware/conditional_get.rb +3 -0
- data/lib/merb-core/rack/middleware/content_length.rb +2 -0
- data/lib/merb-core/rack/middleware/path_prefix.rb +4 -0
- data/lib/merb-core/rack/middleware/profiler.rb +3 -1
- data/lib/merb-core/rack/middleware/static.rb +7 -1
- data/lib/merb-core/rack/middleware/tracer.rb +1 -0
- data/lib/merb-core/rack/stream_wrapper.rb +35 -30
- data/lib/merb-core/server.rb +17 -16
- data/lib/merb-core/tasks/gem_management.rb +1 -1
- data/lib/merb-core/tasks/merb.rb +3 -1
- data/lib/merb-core/tasks/merb_rake_helper.rb +1 -1
- data/lib/merb-core/test.rb +8 -8
- data/lib/merb-core/test/helpers.rb +1 -1
- data/lib/merb-core/test/helpers/cookie_jar.rb +16 -2
- data/lib/merb-core/test/helpers/mock_request_helper.rb +13 -13
- data/lib/merb-core/test/helpers/request_helper.rb +1 -1
- data/lib/merb-core/test/helpers/route_helper.rb +2 -2
- data/lib/merb-core/test/matchers.rb +3 -3
- data/lib/merb-core/test/matchers/request_matchers.rb +1 -1
- data/lib/merb-core/test/run_spec.rb +1 -1
- data/lib/merb-core/test/tasks/spectasks.rb +1 -1
- data/lib/merb-core/test/test_ext/hpricot.rb +1 -1
- data/lib/merb-core/test/test_ext/rspec.rb +2 -2
- data/lib/merb-core/test/test_ext/string.rb +1 -1
- data/lib/merb-core/version.rb +1 -1
- metadata +8 -22
- data/lib/merb-core/test/matchers/view_matchers.rb +0 -231
- data/lib/merb-core/test/webrat.rb +0 -37
- data/lib/merb-core/vendor/nokogiri/css.rb +0 -6
- data/lib/merb-core/vendor/nokogiri/css/generated_parser.rb +0 -653
- data/lib/merb-core/vendor/nokogiri/css/generated_tokenizer.rb +0 -159
- data/lib/merb-core/vendor/nokogiri/css/node.rb +0 -95
- data/lib/merb-core/vendor/nokogiri/css/parser.rb +0 -24
- data/lib/merb-core/vendor/nokogiri/css/parser.y +0 -198
- data/lib/merb-core/vendor/nokogiri/css/tokenizer.rb +0 -9
- data/lib/merb-core/vendor/nokogiri/css/tokenizer.rex +0 -63
- data/lib/merb-core/vendor/nokogiri/css/xpath_visitor.rb +0 -159
data/lib/merb-core/plugins.rb
CHANGED
|
@@ -10,7 +10,7 @@ module Merb
|
|
|
10
10
|
# The configuration loaded from Merb.root / "config/plugins.yml" or, if
|
|
11
11
|
# the load fails, an empty hash whose default value is another Hash.
|
|
12
12
|
#
|
|
13
|
-
#
|
|
13
|
+
# :api: plugin
|
|
14
14
|
def self.config
|
|
15
15
|
@config ||= begin
|
|
16
16
|
# this is so you can do Merb.plugins.config[:helpers][:awesome] = "bar"
|
|
@@ -31,7 +31,7 @@ module Merb
|
|
|
31
31
|
# ==== Returns
|
|
32
32
|
# Array(String):: All Rakefile load paths Merb uses for plugins.
|
|
33
33
|
#
|
|
34
|
-
#
|
|
34
|
+
# :api: plugin
|
|
35
35
|
def self.rakefiles
|
|
36
36
|
Merb.rakefiles
|
|
37
37
|
end
|
|
@@ -39,7 +39,7 @@ module Merb
|
|
|
39
39
|
# ==== Returns
|
|
40
40
|
# Array(String):: All Generator load paths Merb uses for plugins.
|
|
41
41
|
#
|
|
42
|
-
#
|
|
42
|
+
# :api: plugin
|
|
43
43
|
def self.generators
|
|
44
44
|
Merb.generators
|
|
45
45
|
end
|
|
@@ -59,7 +59,7 @@ module Merb
|
|
|
59
59
|
# Merb::Plugins.add_rakefiles "merb_sequel" / "merbtasks"
|
|
60
60
|
# end
|
|
61
61
|
#
|
|
62
|
-
#
|
|
62
|
+
# :api: plugin
|
|
63
63
|
def self.add_rakefiles(*rakefiles)
|
|
64
64
|
Merb.add_rakefiles(*rakefiles)
|
|
65
65
|
end
|
|
@@ -72,7 +72,7 @@ module Merb
|
|
|
72
72
|
# This is the recommended way to register your plugin's generators
|
|
73
73
|
# in Merb.
|
|
74
74
|
#
|
|
75
|
-
#
|
|
75
|
+
# :api: plugin
|
|
76
76
|
def self.add_generators(*generators)
|
|
77
77
|
Merb.add_generators(*generators)
|
|
78
78
|
end
|
data/lib/merb-core/rack.rb
CHANGED
|
@@ -11,6 +11,8 @@ module Merb
|
|
|
11
11
|
#
|
|
12
12
|
# ==== Returns.
|
|
13
13
|
# Class:: The adapter class.
|
|
14
|
+
#
|
|
15
|
+
# :api: private
|
|
14
16
|
def get(id)
|
|
15
17
|
if @adapters[id.to_s]
|
|
16
18
|
Object.full_const_get(@adapters[id.to_s])
|
|
@@ -24,6 +26,8 @@ module Merb
|
|
|
24
26
|
# ==== Parameters
|
|
25
27
|
# ids<Array>:: Identifiers by which this adapter is recognized by.
|
|
26
28
|
# adapter_class<Class>:: The Rack adapter class.
|
|
29
|
+
#
|
|
30
|
+
# :api: plugin
|
|
27
31
|
def register(ids, adapter_class)
|
|
28
32
|
@adapters ||= Hash.new
|
|
29
33
|
ids.each { |id| @adapters[id] = "Merb::Rack::#{adapter_class}" }
|
|
@@ -45,4 +49,4 @@ module Merb
|
|
|
45
49
|
Adapter.register %w{webrick}, :WEBrick
|
|
46
50
|
|
|
47
51
|
end # Rack
|
|
48
|
-
end # Merb
|
|
52
|
+
end # Merb
|
|
@@ -6,7 +6,7 @@ module Merb
|
|
|
6
6
|
# will be called to start a server created with the new_server method.
|
|
7
7
|
# This is called from the AbstractAdapter start method.
|
|
8
8
|
#
|
|
9
|
-
#
|
|
9
|
+
# :api: plugin
|
|
10
10
|
# @overridable
|
|
11
11
|
def self.start_server
|
|
12
12
|
raise NotImplemented
|
|
@@ -20,12 +20,12 @@ module Merb
|
|
|
20
20
|
# ==== Parameters
|
|
21
21
|
# port<Integer>:: The port the server should listen on
|
|
22
22
|
#
|
|
23
|
-
#
|
|
23
|
+
# :api: plugin
|
|
24
24
|
# @overridable
|
|
25
25
|
def self.new_server(port)
|
|
26
26
|
raise NotImplemented
|
|
27
27
|
end
|
|
28
|
-
|
|
28
|
+
|
|
29
29
|
# This method is designed to be overridden in a rack adapter. It will
|
|
30
30
|
# be called to stop the adapter server.
|
|
31
31
|
#
|
|
@@ -35,7 +35,7 @@ module Merb
|
|
|
35
35
|
# ==== Returns
|
|
36
36
|
# Boolean:: True if the server was properly stopped.
|
|
37
37
|
#
|
|
38
|
-
#
|
|
38
|
+
# :api: plugin
|
|
39
39
|
# @overridable
|
|
40
40
|
def self.stop(status)
|
|
41
41
|
raise NotImplemented
|
|
@@ -46,7 +46,7 @@ module Merb
|
|
|
46
46
|
# ==== Parameters
|
|
47
47
|
# port<Integer>:: The port to start the worker process on.
|
|
48
48
|
#
|
|
49
|
-
#
|
|
49
|
+
# :api: private
|
|
50
50
|
def self.spawn_worker(port)
|
|
51
51
|
worker_pid = Kernel.fork
|
|
52
52
|
start_at_port(port, @opts) unless worker_pid
|
|
@@ -69,7 +69,7 @@ module Merb
|
|
|
69
69
|
# port: the port to bind to
|
|
70
70
|
# cluster: the number
|
|
71
71
|
#
|
|
72
|
-
#
|
|
72
|
+
# :api: private
|
|
73
73
|
def self.start(opts={})
|
|
74
74
|
@opts = opts
|
|
75
75
|
$WORKERS ||= []
|
|
@@ -148,7 +148,7 @@ module Merb
|
|
|
148
148
|
# opts<Hash>:: The hash of options, defaults to the @opts
|
|
149
149
|
# instance variable.
|
|
150
150
|
#
|
|
151
|
-
#
|
|
151
|
+
# :api: private
|
|
152
152
|
def self.start_at_port(port, opts = @opts)
|
|
153
153
|
at_exit do
|
|
154
154
|
Merb::Server.remove_pid(port)
|
|
@@ -161,6 +161,7 @@ module Merb
|
|
|
161
161
|
# of workers.
|
|
162
162
|
if Merb::Config[:daemonize]
|
|
163
163
|
Merb.trap('INT') do
|
|
164
|
+
Merb.exiting = true
|
|
164
165
|
stop
|
|
165
166
|
Merb.logger.warn! "Exiting port #{port}\n"
|
|
166
167
|
exit_process
|
|
@@ -209,7 +210,11 @@ module Merb
|
|
|
209
210
|
# Call the adapter's new_server method, which should attempt
|
|
210
211
|
# to bind to a port.
|
|
211
212
|
new_server(port)
|
|
212
|
-
rescue Errno::EADDRINUSE
|
|
213
|
+
rescue Errno::EADDRINUSE => e
|
|
214
|
+
if Merb::Config[:bind_fail_fatal]
|
|
215
|
+
Merb.fatal! "Could not bind to #{port}. It was already in use", e
|
|
216
|
+
end
|
|
217
|
+
|
|
213
218
|
unless printed_warning
|
|
214
219
|
Merb.logger.warn! "Port #{port} is in use, " \
|
|
215
220
|
"Waiting for it to become available."
|
|
@@ -235,7 +240,7 @@ module Merb
|
|
|
235
240
|
# ==== Parameters
|
|
236
241
|
# status<Integer>:: The exit code of the process.
|
|
237
242
|
#
|
|
238
|
-
#
|
|
243
|
+
# :api: private
|
|
239
244
|
def self.exit_process(status = 0)
|
|
240
245
|
exit(status)
|
|
241
246
|
end
|
|
@@ -247,7 +252,7 @@ module Merb
|
|
|
247
252
|
# processes.
|
|
248
253
|
# port<Integer>:: The base port that the app is running on.
|
|
249
254
|
#
|
|
250
|
-
#
|
|
255
|
+
# :api: private
|
|
251
256
|
def self.process_title(whoami, port)
|
|
252
257
|
name = Merb::Config[:name]
|
|
253
258
|
app = "merb#{" : #{name}" if (name && name != "merb")}"
|
|
@@ -5,20 +5,22 @@ module Merb
|
|
|
5
5
|
|
|
6
6
|
class Ebb < Merb::Rack::AbstractAdapter
|
|
7
7
|
# start an Ebb server on given host and port.
|
|
8
|
-
|
|
8
|
+
# :api: plugin
|
|
9
9
|
def self.new_server(port)
|
|
10
10
|
Merb::Dispatcher.use_mutex = false
|
|
11
11
|
opts = @opts.merge(:port => port)
|
|
12
12
|
@th = Thread.new { Thread.current[:server] = ::Ebb.start_server(opts[:app], opts) }
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
+
# :api: plugin
|
|
15
16
|
def self.start_server
|
|
16
17
|
@th.join
|
|
17
18
|
end
|
|
18
19
|
|
|
20
|
+
# :api: plugin
|
|
19
21
|
def self.stop(status = 0)
|
|
20
22
|
::Ebb.stop_server
|
|
21
23
|
end
|
|
22
24
|
end
|
|
23
25
|
end
|
|
24
|
-
end
|
|
26
|
+
end
|
|
@@ -7,6 +7,8 @@ module Merb
|
|
|
7
7
|
#
|
|
8
8
|
# ==== Options (opts)
|
|
9
9
|
# :app<String>>:: The application name.
|
|
10
|
+
#
|
|
11
|
+
# :api: plugin
|
|
10
12
|
def self.start(opts={})
|
|
11
13
|
Merb.logger.warn!("Using FastCGI adapter")
|
|
12
14
|
Merb::Server.change_privilege
|
|
@@ -14,4 +16,4 @@ module Merb
|
|
|
14
16
|
end
|
|
15
17
|
end
|
|
16
18
|
end
|
|
17
|
-
end
|
|
19
|
+
end
|
|
@@ -54,18 +54,20 @@ module Merb
|
|
|
54
54
|
#
|
|
55
55
|
# url(:articles, 2008, 10, "test_article")
|
|
56
56
|
#
|
|
57
|
-
#
|
|
57
|
+
# :api: public
|
|
58
58
|
def url(name, *args)
|
|
59
59
|
args << {}
|
|
60
60
|
Merb::Router.url(name, *args)
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
# Reloads classes using Merb::BootLoader::ReloadClasses.
|
|
64
|
+
# :api: public
|
|
64
65
|
def reload!
|
|
65
66
|
Merb::BootLoader::ReloadClasses.reload
|
|
66
67
|
end
|
|
67
68
|
|
|
68
69
|
# Prints all routes for the application.
|
|
70
|
+
# :api: public
|
|
69
71
|
def show_routes
|
|
70
72
|
seen = []
|
|
71
73
|
unless Merb::Router.named_routes.empty?
|
|
@@ -96,6 +98,7 @@ module Merb
|
|
|
96
98
|
#
|
|
97
99
|
# An ORM should implement Merb::Orms::MyOrm#open_sandbox! to support this.
|
|
98
100
|
# Usually this involves starting a transaction.
|
|
101
|
+
# :api: public
|
|
99
102
|
def open_sandbox!
|
|
100
103
|
puts "Loading #{Merb.environment} environment in sandbox (Merb #{Merb::VERSION})"
|
|
101
104
|
puts "Any modifications you make will be rolled back on exit"
|
|
@@ -106,12 +109,14 @@ module Merb
|
|
|
106
109
|
#
|
|
107
110
|
# An ORM should implement Merb::Orms::MyOrm#close_sandbox! to support this.
|
|
108
111
|
# Usually this involves rolling back a transaction.
|
|
112
|
+
# :api: public
|
|
109
113
|
def close_sandbox!
|
|
110
114
|
orm_modules.each { |orm| orm.close_sandbox! if orm.respond_to?(:close_sandbox!) }
|
|
111
115
|
puts "Modifications have been rolled back"
|
|
112
116
|
end
|
|
113
117
|
|
|
114
118
|
# Explictly show logger output during IRB session
|
|
119
|
+
# :api: public
|
|
115
120
|
def trace_log!
|
|
116
121
|
Merb.logger.auto_flush = true
|
|
117
122
|
end
|
|
@@ -120,6 +125,7 @@ module Merb
|
|
|
120
125
|
|
|
121
126
|
# ==== Returns
|
|
122
127
|
# Array:: All Merb::Orms::* modules.
|
|
128
|
+
# :api: private
|
|
123
129
|
def orm_modules
|
|
124
130
|
if Merb.const_defined?('Orms')
|
|
125
131
|
Merb::Orms.constants.map { |c| Merb::Orms::const_get(c) }
|
|
@@ -138,6 +144,8 @@ module Merb
|
|
|
138
144
|
# ==== Notes
|
|
139
145
|
# If the +.irbrc+ file exists, it will be loaded into the IRBRC
|
|
140
146
|
# environment variable.
|
|
147
|
+
#
|
|
148
|
+
# :api: plugin
|
|
141
149
|
def self.start(opts={})
|
|
142
150
|
m = Merb::Rack::Console.new
|
|
143
151
|
m.extend Merb::Test::RequestHelper
|
|
@@ -156,6 +164,7 @@ module Merb
|
|
|
156
164
|
|
|
157
165
|
private
|
|
158
166
|
|
|
167
|
+
# :api: private
|
|
159
168
|
def self.sandboxed?
|
|
160
169
|
Merb::Config[:sandbox]
|
|
161
170
|
end
|
|
@@ -14,6 +14,7 @@ module Merb
|
|
|
14
14
|
|
|
15
15
|
class Mongrel < Merb::Rack::AbstractAdapter
|
|
16
16
|
|
|
17
|
+
# :api: plugin
|
|
17
18
|
def self.stop(status = 0)
|
|
18
19
|
if @server
|
|
19
20
|
begin
|
|
@@ -25,11 +26,13 @@ module Merb
|
|
|
25
26
|
true
|
|
26
27
|
end
|
|
27
28
|
end
|
|
28
|
-
|
|
29
|
+
|
|
30
|
+
# :api: plugin
|
|
29
31
|
def self.new_server(port)
|
|
30
32
|
@server = ::Mongrel::HttpServer.new(@opts[:host], port)
|
|
31
33
|
end
|
|
32
34
|
|
|
35
|
+
# :api: plugin
|
|
33
36
|
def self.start_server
|
|
34
37
|
@server.register('/', ::Merb::Rack::Handler::Mongrel.new(@opts[:app]))
|
|
35
38
|
@server.run.join
|
|
@@ -38,4 +41,4 @@ module Merb
|
|
|
38
41
|
end
|
|
39
42
|
|
|
40
43
|
end
|
|
41
|
-
end
|
|
44
|
+
end
|
|
@@ -12,6 +12,8 @@ module Merb
|
|
|
12
12
|
# ==== Notes
|
|
13
13
|
# If opts[:runner_code] matches a filename, that file will be read and
|
|
14
14
|
# the contents executed. Otherwise the code will be executed directly.
|
|
15
|
+
#
|
|
16
|
+
# :api: plugin
|
|
15
17
|
def self.start(opts={})
|
|
16
18
|
Merb::Server.change_privilege
|
|
17
19
|
if opts[:runner_code]
|
|
@@ -25,4 +27,4 @@ module Merb
|
|
|
25
27
|
end
|
|
26
28
|
end
|
|
27
29
|
end
|
|
28
|
-
end
|
|
30
|
+
end
|
|
@@ -7,6 +7,7 @@ module Merb
|
|
|
7
7
|
class Thin < Merb::Rack::AbstractAdapter
|
|
8
8
|
# start a Thin server on given host and port.
|
|
9
9
|
|
|
10
|
+
# :api: plugin
|
|
10
11
|
def self.new_server(port)
|
|
11
12
|
Merb::Dispatcher.use_mutex = false
|
|
12
13
|
|
|
@@ -22,11 +23,13 @@ module Merb
|
|
|
22
23
|
end
|
|
23
24
|
end
|
|
24
25
|
|
|
26
|
+
# :api: plugin
|
|
25
27
|
def self.start_server
|
|
26
28
|
::Thin::Logging.silent = true
|
|
27
29
|
@server.start
|
|
28
30
|
end
|
|
29
31
|
|
|
32
|
+
# :api: plugin
|
|
30
33
|
def self.stop(status = 0)
|
|
31
34
|
if @server
|
|
32
35
|
@server.stop
|
|
@@ -35,4 +38,4 @@ module Merb
|
|
|
35
38
|
end
|
|
36
39
|
end
|
|
37
40
|
end
|
|
38
|
-
end
|
|
41
|
+
end
|
|
@@ -7,9 +7,11 @@ module Merb
|
|
|
7
7
|
class WEBrick < Merb::Rack::AbstractAdapter
|
|
8
8
|
|
|
9
9
|
class << self
|
|
10
|
+
# :api: private
|
|
10
11
|
attr_accessor :server
|
|
11
12
|
end
|
|
12
|
-
|
|
13
|
+
|
|
14
|
+
# :api: plugin
|
|
13
15
|
def self.new_server(port)
|
|
14
16
|
options = {
|
|
15
17
|
:Port => port,
|
|
@@ -25,48 +27,20 @@ module Merb
|
|
|
25
27
|
@server = ::WEBrick::HTTPServer.new(options.merge(:DoNotListen => true))
|
|
26
28
|
@server.listeners.replace sockets
|
|
27
29
|
end
|
|
28
|
-
|
|
30
|
+
|
|
31
|
+
# :api: plugin
|
|
29
32
|
def self.start_server
|
|
30
33
|
@server.mount("/", ::Rack::Handler::WEBrick, @opts[:app])
|
|
31
34
|
@server.start
|
|
32
35
|
exit(@status)
|
|
33
36
|
end
|
|
34
37
|
|
|
38
|
+
# :api: plugin
|
|
35
39
|
def self.stop(status = 0)
|
|
36
40
|
@status = status
|
|
37
41
|
@server.shutdown
|
|
38
42
|
end
|
|
39
|
-
|
|
40
|
-
def self.exit_process(status = 0)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
# start WEBrick server on given host and port.
|
|
44
|
-
|
|
45
|
-
# ==== Parameters
|
|
46
|
-
# opts<Hash>:: Options for WEBrick (see below).
|
|
47
|
-
#
|
|
48
|
-
# ==== Options (opts)
|
|
49
|
-
# :host<String>:: The hostname that WEBrick should serve.
|
|
50
|
-
# :port<Fixnum>:: The port WEBrick should bind to.
|
|
51
|
-
# :app<String>>:: The application name.
|
|
52
|
-
# def self.start(opts={})
|
|
53
|
-
# Merb.logger.warn!("Using Webrick adapter")
|
|
54
|
-
#
|
|
55
|
-
# options = {
|
|
56
|
-
# :Port => opts[:port],
|
|
57
|
-
# :BindAddress => opts[:host],
|
|
58
|
-
# :Logger => Merb.logger,
|
|
59
|
-
# :AccessLog => [
|
|
60
|
-
# [Merb.logger, ::WEBrick::AccessLog::COMMON_LOG_FORMAT],
|
|
61
|
-
# [Merb.logger, ::WEBrick::AccessLog::REFERER_LOG_FORMAT]
|
|
62
|
-
# ]
|
|
63
|
-
# }
|
|
64
|
-
#
|
|
65
|
-
# server = ::WEBrick::HTTPServer.new(options)
|
|
66
|
-
# Merb::Server.change_privilege
|
|
67
|
-
# server.mount("/", ::Rack::Handler::WEBrick, opts[:app])
|
|
68
|
-
# server.start
|
|
69
|
-
# end
|
|
43
|
+
|
|
70
44
|
end
|
|
71
45
|
end
|
|
72
|
-
end
|
|
46
|
+
end
|