merb-core 0.9.8 → 0.9.9

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 (57) hide show
  1. data/CONTRIBUTORS +33 -0
  2. data/README +7 -3
  3. data/Rakefile +3 -3
  4. data/lib/merb-core.rb +165 -94
  5. data/lib/merb-core/bootloader.rb +469 -100
  6. data/lib/merb-core/config.rb +79 -3
  7. data/lib/merb-core/constants.rb +24 -2
  8. data/lib/merb-core/controller/abstract_controller.rb +172 -67
  9. data/lib/merb-core/controller/exceptions.rb +50 -6
  10. data/lib/merb-core/controller/merb_controller.rb +215 -108
  11. data/lib/merb-core/controller/mime.rb +36 -12
  12. data/lib/merb-core/controller/mixins/authentication.rb +52 -7
  13. data/lib/merb-core/controller/mixins/conditional_get.rb +14 -0
  14. data/lib/merb-core/controller/mixins/controller.rb +90 -58
  15. data/lib/merb-core/controller/mixins/render.rb +34 -10
  16. data/lib/merb-core/controller/mixins/responder.rb +40 -16
  17. data/lib/merb-core/controller/template.rb +37 -16
  18. data/lib/merb-core/core_ext/hash.rb +9 -0
  19. data/lib/merb-core/core_ext/kernel.rb +92 -41
  20. data/lib/merb-core/dispatch/dispatcher.rb +29 -45
  21. data/lib/merb-core/dispatch/request.rb +186 -82
  22. data/lib/merb-core/dispatch/router.rb +141 -53
  23. data/lib/merb-core/dispatch/router/behavior.rb +296 -139
  24. data/lib/merb-core/dispatch/router/resources.rb +51 -19
  25. data/lib/merb-core/dispatch/router/route.rb +76 -23
  26. data/lib/merb-core/dispatch/session.rb +80 -36
  27. data/lib/merb-core/dispatch/session/container.rb +31 -15
  28. data/lib/merb-core/dispatch/session/cookie.rb +51 -22
  29. data/lib/merb-core/dispatch/session/memcached.rb +10 -6
  30. data/lib/merb-core/dispatch/session/memory.rb +17 -5
  31. data/lib/merb-core/dispatch/session/store_container.rb +21 -9
  32. data/lib/merb-core/dispatch/worker.rb +16 -2
  33. data/lib/merb-core/gem_ext/erubis.rb +4 -0
  34. data/lib/merb-core/plugins.rb +13 -0
  35. data/lib/merb-core/rack.rb +1 -0
  36. data/lib/merb-core/rack/adapter.rb +1 -0
  37. data/lib/merb-core/rack/adapter/abstract.rb +95 -17
  38. data/lib/merb-core/rack/adapter/irb.rb +50 -5
  39. data/lib/merb-core/rack/application.rb +27 -5
  40. data/lib/merb-core/rack/handler/mongrel.rb +6 -6
  41. data/lib/merb-core/rack/helpers.rb +33 -0
  42. data/lib/merb-core/rack/middleware/conditional_get.rb +1 -1
  43. data/lib/merb-core/rack/middleware/path_prefix.rb +3 -3
  44. data/lib/merb-core/rack/middleware/static.rb +11 -7
  45. data/lib/merb-core/server.rb +134 -69
  46. data/lib/merb-core/tasks/gem_management.rb +153 -80
  47. data/lib/merb-core/tasks/merb_rake_helper.rb +12 -4
  48. data/lib/merb-core/tasks/stats.rake +1 -1
  49. data/lib/merb-core/test/helpers/mock_request_helper.rb +29 -22
  50. data/lib/merb-core/test/helpers/request_helper.rb +1 -1
  51. data/lib/merb-core/test/helpers/route_helper.rb +50 -4
  52. data/lib/merb-core/test/matchers/request_matchers.rb +2 -36
  53. data/lib/merb-core/test/matchers/view_matchers.rb +32 -22
  54. data/lib/merb-core/test/run_specs.rb +6 -5
  55. data/lib/merb-core/test/test_ext/rspec.rb +6 -19
  56. data/lib/merb-core/version.rb +1 -1
  57. metadata +5 -4
@@ -1,7 +1,4 @@
1
1
  require 'rubygems'
2
- require 'rubygems/dependency_installer'
3
- require 'rubygems/uninstaller'
4
- require 'rubygems/dependency'
5
2
 
6
3
  module ColorfulMessages
7
4
 
@@ -22,12 +19,28 @@ module ColorfulMessages
22
19
 
23
20
  alias_method :message, :success
24
21
 
22
+ # magenta
23
+ def note(*messages)
24
+ puts messages.map { |msg| "\033[1;35m#{msg}\033[0m" }
25
+ end
26
+
27
+ # blue
28
+ def info(*messages)
29
+ puts messages.map { |msg| "\033[1;34m#{msg}\033[0m" }
30
+ end
31
+
25
32
  end
26
33
 
34
+ ##############################################################################
35
+
36
+ require 'rubygems/dependency_installer'
37
+ require 'rubygems/uninstaller'
38
+ require 'rubygems/dependency'
39
+
27
40
  module GemManagement
28
41
 
29
42
  include ColorfulMessages
30
-
43
+
31
44
  # Install a gem - looks remotely and local gem cache;
32
45
  # won't process rdoc or ri options.
33
46
  def install_gem(gem, options = {})
@@ -39,13 +52,13 @@ module GemManagement
39
52
  version = options.delete(:version)
40
53
  Gem.configuration.update_sources = false
41
54
 
55
+ # Limit source index to install dir
42
56
  update_source_index(options[:install_dir]) if options[:install_dir]
43
57
 
44
58
  installer = Gem::DependencyInstaller.new(options.merge(:user_install => false))
45
59
 
46
- # Exclude gems to refresh from index - force (re)install of new version
47
- # def installer.source_index; @source_index; end
48
- unless refresh.empty?
60
+ # Force-refresh certain gems by excluding them from the current index
61
+ if !options[:ignore_dependencies] && refresh.respond_to?(:include?) && !refresh.empty?
49
62
  source_index = installer.instance_variable_get(:@source_index)
50
63
  source_index.gems.each do |name, spec|
51
64
  source_index.gems.delete(name) if refresh.include?(spec.name)
@@ -68,7 +81,7 @@ module GemManagement
68
81
  exception = e
69
82
  end
70
83
  if installer.installed_gems.empty? && exception
71
- error "Failed to install gem '#{gem} (#{version})' (#{exception.message})"
84
+ error "Failed to install gem '#{gem} (#{version || 'any version'})' (#{exception.message})"
72
85
  end
73
86
  installer.installed_gems.each do |spec|
74
87
  success "Successfully installed #{spec.full_name}"
@@ -103,81 +116,73 @@ module GemManagement
103
116
  end
104
117
 
105
118
  # Install a gem from source - builds and packages it first then installs.
106
- def install_gem_from_src(gem_src_dir, options = {})
107
- if !File.directory?(gem_src_dir)
108
- raise "Missing rubygem source path: #{gem_src_dir}"
109
- end
110
- if options[:install_dir] && !File.directory?(options[:install_dir])
111
- raise "Missing rubygems path: #{options[:install_dir]}"
112
- end
119
+ #
120
+ # Examples:
121
+ # install_gem_from_source(source_dir, :install_dir => ...)
122
+ # install_gem_from_source(source_dir, gem_name)
123
+ # install_gem_from_source(source_dir, :skip => [...])
124
+ def install_gem_from_source(source_dir, *args)
125
+ installed_gems = []
126
+ Dir.chdir(source_dir) do
127
+ opts = args.last.is_a?(Hash) ? args.pop : {}
128
+ gem_name = args[0] || File.basename(source_dir)
129
+ gem_pkg_dir = File.join(source_dir, 'pkg')
130
+ gem_pkg_glob = File.join(gem_pkg_dir, "#{gem_name}-*.gem")
131
+ skip_gems = opts.delete(:skip) || []
113
132
 
114
- gem_name = File.basename(gem_src_dir)
115
- gem_pkg_dir = File.expand_path(File.join(gem_src_dir, 'pkg'))
133
+ # Cleanup what's already there
134
+ clobber(source_dir)
135
+ FileUtils.mkdir_p(gem_pkg_dir) unless File.directory?(gem_pkg_dir)
116
136
 
117
- # We need to use local bin executables if available.
118
- thor = "#{Gem.ruby} -S #{which('thor')}"
119
- rake = "#{Gem.ruby} -S #{which('rake')}"
120
-
121
- # Handle pure Thor installation instead of Rake
122
- if File.exists?(File.join(gem_src_dir, 'Thorfile'))
123
- # Remove any existing packages.
124
- FileUtils.rm_rf(gem_pkg_dir) if File.directory?(gem_pkg_dir)
125
- # Create the package.
126
- FileUtils.cd(gem_src_dir) { system("#{thor} :package") }
127
- # Install the package using rubygems.
128
- if package = Dir[File.join(gem_pkg_dir, "#{gem_name}-*.gem")].last
129
- FileUtils.cd(File.dirname(package)) do
130
- install_gem(File.basename(package), options.dup)
131
- return true
132
- end
137
+ # Recursively process all gem packages within the source dir
138
+ skip_gems << gem_name
139
+ packages = package_all(source_dir, skip_gems)
140
+
141
+ if packages.length == 1
142
+ # The are no subpackages for the main package
143
+ refresh = [gem_name]
133
144
  else
134
- raise Gem::InstallError, "No package found for #{gem_name}"
135
- end
136
- # Handle elaborate installation through Rake
137
- else
138
- # Clean and regenerate any subgems for meta gems.
139
- Dir[File.join(gem_src_dir, '*', 'Rakefile')].each do |rakefile|
140
- FileUtils.cd(File.dirname(rakefile)) do
141
- system("#{rake} clobber_package; #{rake} package")
142
- end
143
- end
144
-
145
- # Handle the main gem install.
146
- if File.exists?(File.join(gem_src_dir, 'Rakefile'))
147
- subgems = []
148
- # Remove any existing packages.
149
- FileUtils.cd(gem_src_dir) { system("#{rake} clobber_package") }
150
- # Create the main gem pkg dir if it doesn't exist.
151
- FileUtils.mkdir_p(gem_pkg_dir) unless File.directory?(gem_pkg_dir)
152
- # Copy any subgems to the main gem pkg dir.
153
- Dir[File.join(gem_src_dir, '*', 'pkg', '*.gem')].each do |subgem_pkg|
154
- if name = File.basename(subgem_pkg, '.gem')[/^(.*?)-([\d\.]+)$/, 1]
155
- subgems << name
156
- end
157
- dest = File.join(gem_pkg_dir, File.basename(subgem_pkg))
158
- FileUtils.copy_entry(subgem_pkg, dest, true, false, true)
145
+ # Gather all packages into the top-level pkg directory
146
+ packages.each do |pkg|
147
+ FileUtils.copy_entry(pkg, File.join(gem_pkg_dir, File.basename(pkg)))
159
148
  end
160
-
161
- # Finally generate the main package and install it; subgems
162
- # (dependencies) are local to the main package.
163
- FileUtils.cd(gem_src_dir) do
164
- system("#{rake} package")
165
- FileUtils.cd(gem_pkg_dir) do
166
- if package = Dir[File.join(gem_pkg_dir, "#{gem_name}-*.gem")].last
167
- # If the (meta) gem has it's own package, install it.
168
- install_gem(File.basename(package), options.merge(:refresh => subgems))
169
- else
170
- # Otherwise install each package seperately.
171
- Dir["*.gem"].each { |gem| install_gem(gem, options.dup) }
172
- end
149
+
150
+ # Finally package the main gem - without clobbering the already copied pkgs
151
+ package(source_dir, false)
152
+
153
+ # Gather subgems to refresh during installation of the main gem
154
+ refresh = packages.map do |pkg|
155
+ File.basename(pkg, '.gem')[/^(.*?)-([\d\.]+)$/, 1] rescue nil
156
+ end.compact
157
+
158
+ # Install subgems explicitly even if ignore_dependencies is set
159
+ if opts[:ignore_dependencies]
160
+ refresh.each do |name|
161
+ gem_pkg = Dir[File.join(gem_pkg_dir, "#{name}-*.gem")][0]
162
+ install_pkg(gem_pkg, opts)
173
163
  end
174
- return true
175
164
  end
176
165
  end
166
+
167
+ # Finally install the main gem
168
+ if install_pkg(Dir[gem_pkg_glob][0], opts.merge(:refresh => refresh))
169
+ installed_gems = refresh
170
+ else
171
+ installed_gems = []
172
+ end
177
173
  end
178
- raise Gem::InstallError, "No Rakefile found for #{gem_name}"
174
+ installed_gems
179
175
  end
180
-
176
+
177
+ def install_pkg(gem_pkg, opts = {})
178
+ if (gem_pkg && File.exists?(gem_pkg))
179
+ # Needs to be executed from the directory that contains all packages
180
+ Dir.chdir(File.dirname(gem_pkg)) { install_gem(gem_pkg, opts) }
181
+ else
182
+ false
183
+ end
184
+ end
185
+
181
186
  # Uninstall a gem.
182
187
  def uninstall_gem(gem, options = {})
183
188
  if options[:version] && !options[:version].is_a?(Gem::Requirement)
@@ -187,6 +192,45 @@ module GemManagement
187
192
  Gem::Uninstaller.new(gem, options).uninstall
188
193
  end
189
194
 
195
+ def clobber(source_dir)
196
+ Dir.chdir(source_dir) do
197
+ system "#{Gem.ruby} -S rake -s clobber" unless File.exists?('Thorfile')
198
+ end
199
+ end
200
+
201
+ def package(source_dir, clobber = true)
202
+ Dir.chdir(source_dir) do
203
+ if File.exists?('Thorfile')
204
+ thor ":package"
205
+ elsif File.exists?('Rakefile')
206
+ rake "clobber" if clobber
207
+ rake "package"
208
+ end
209
+ end
210
+ Dir[File.join(source_dir, 'pkg/*.gem')]
211
+ end
212
+
213
+ def package_all(source_dir, skip = [], packages = [])
214
+ if Dir[File.join(source_dir, '{Rakefile,Thorfile}')][0]
215
+ name = File.basename(source_dir)
216
+ Dir[File.join(source_dir, '*', '{Rakefile,Thorfile}')].each do |taskfile|
217
+ package_all(File.dirname(taskfile), skip, packages)
218
+ end
219
+ packages.push(*package(source_dir)) unless skip.include?(name)
220
+ end
221
+ packages.uniq
222
+ end
223
+
224
+ def rake(cmd)
225
+ cmd << " >/dev/null" if $SILENT && !Gem.win_platform?
226
+ system "#{Gem.ruby} -S #{which('rake')} -s #{cmd} >/dev/null"
227
+ end
228
+
229
+ def thor(cmd)
230
+ cmd << " >/dev/null" if $SILENT && !Gem.win_platform?
231
+ system "#{Gem.ruby} -S #{which('thor')} #{cmd}"
232
+ end
233
+
190
234
  # Use the local bin/* executables if available.
191
235
  def which(executable)
192
236
  if File.executable?(exec = File.join(Dir.pwd, 'bin', executable))
@@ -196,17 +240,43 @@ module GemManagement
196
240
  end
197
241
  end
198
242
 
243
+ # Partition gems into system, local and missing gems
244
+ def partition_dependencies(dependencies, gem_dir)
245
+ system_specs, local_specs, missing_deps = [], [], []
246
+ if gem_dir && File.directory?(gem_dir)
247
+ gem_dir = File.expand_path(gem_dir)
248
+ ::Gem.clear_paths; ::Gem.path.unshift(gem_dir)
249
+ ::Gem.source_index.refresh!
250
+ dependencies.each do |dep|
251
+ gemspecs = ::Gem.source_index.search(dep)
252
+ local = gemspecs.reverse.find { |s| s.loaded_from.index(gem_dir) == 0 }
253
+ if local
254
+ local_specs << local
255
+ elsif gemspecs.last
256
+ system_specs << gemspecs.last
257
+ else
258
+ missing_deps << dep
259
+ end
260
+ end
261
+ ::Gem.clear_paths
262
+ end
263
+ [system_specs, local_specs, missing_deps]
264
+ end
265
+
199
266
  # Create a modified executable wrapper in the specified bin directory.
200
267
  def ensure_bin_wrapper_for(gem_dir, bin_dir, *gems)
268
+ options = gems.last.is_a?(Hash) ? gems.last : {}
269
+ options[:no_minigems] ||= []
201
270
  if bin_dir && File.directory?(bin_dir)
202
271
  gems.each do |gem|
203
272
  if gemspec_path = Dir[File.join(gem_dir, 'specifications', "#{gem}-*.gemspec")].last
204
273
  spec = Gem::Specification.load(gemspec_path)
274
+ enable_minigems = !options[:no_minigems].include?(spec.name)
205
275
  spec.executables.each do |exec|
206
276
  executable = File.join(bin_dir, exec)
207
277
  message "Writing executable wrapper #{executable}"
208
278
  File.open(executable, 'w', 0755) do |f|
209
- f.write(executable_wrapper(spec, exec))
279
+ f.write(executable_wrapper(spec, exec, enable_minigems))
210
280
  end
211
281
  end
212
282
  end
@@ -216,7 +286,10 @@ module GemManagement
216
286
 
217
287
  private
218
288
 
219
- def executable_wrapper(spec, bin_file_name)
289
+ def executable_wrapper(spec, bin_file_name, minigems = true)
290
+ requirements = ['minigems', 'rubygems']
291
+ requirements.reverse! unless minigems
292
+ try_req, then_req = requirements
220
293
  <<-TEXT
221
294
  #!/usr/bin/env ruby
222
295
  #
@@ -226,9 +299,9 @@ module GemManagement
226
299
  # this file is here to facilitate running it.
227
300
 
228
301
  begin
229
- require 'minigems'
302
+ require '#{try_req}'
230
303
  rescue LoadError
231
- require 'rubygems'
304
+ require '#{then_req}'
232
305
  end
233
306
 
234
307
  if File.directory?(gems_dir = File.join(Dir.pwd, 'gems')) ||
@@ -263,5 +336,5 @@ TEXT
263
336
  def update_source_index(dir)
264
337
  Gem.source_index.load_gems_in(File.join(dir, 'specifications'))
265
338
  end
266
-
267
- end
339
+
340
+ end
@@ -9,7 +9,12 @@ module Merb
9
9
  defaults = { :cache => false }
10
10
  defaults[:install_dir] = ENV['GEM_DIR'] if ENV['GEM_DIR']
11
11
  opts = defaults.merge(options)
12
- install_gem_from_src(Dir.pwd, opts)
12
+ dir = if File.directory?(subdir = File.join(Dir.pwd, name))
13
+ subdir
14
+ else
15
+ Dir.pwd
16
+ end
17
+ install_gem_from_source(dir, name, opts)
13
18
  ensure_wrapper(opts[:install_dir] || Gem.default_dir, name)
14
19
  end
15
20
 
@@ -17,7 +22,10 @@ module Merb
17
22
  defaults = { :cache => false }
18
23
  defaults[:install_dir] = ENV['GEM_DIR'] if ENV['GEM_DIR']
19
24
  opts = defaults.merge(options)
20
- install_gem(pkg, opts)
25
+ # Needs to be executed from the directory that contains all packages
26
+ Dir.chdir(File.dirname(pkg_file = File.expand_path(pkg))) do
27
+ install_gem(pkg_file, opts)
28
+ end
21
29
  name = File.basename(pkg, '.gem')[/^(.*?)-([\d\.]+)$/, 1]
22
30
  ensure_wrapper(opts[:install_dir] || Gem.default_dir, name)
23
31
  end
@@ -26,7 +34,7 @@ module Merb
26
34
  defaults = { :ignore => true, :executables => true }
27
35
  defaults[:install_dir] = ENV['GEM_DIR'] if ENV['GEM_DIR']
28
36
  uninstall_gem(name, defaults.merge(options))
29
- end
37
+ end
30
38
 
31
39
  def self.sudo
32
40
  ENV['MERB_SUDO'] ||= "sudo"
@@ -44,7 +52,7 @@ module Merb
44
52
  bindir = File.expand_path(File.join(gemdir, '..', 'bin'))
45
53
  # Fall back to system wide bindir - usually needs sudo permissions
46
54
  bindir = Gem.bindir unless File.directory?(bindir)
47
- ensure_bin_wrapper_for(gemdir, bindir, name)
55
+ ensure_bin_wrapper_for(gemdir, bindir, name, :no_minigems => ['merb-gen'])
48
56
  end
49
57
 
50
58
  end
@@ -66,6 +66,6 @@ task :stats do
66
66
  code_loc = [:controllers, :helpers, :models].inject(0) { |sum, e| sum += @all[e][:loc] }
67
67
  test_loc = @all[:spec][:loc]
68
68
 
69
- puts " Code LOC: #{cb}#{code_loc}#{ce} Test LOC: #{cb}#{test_loc}#{ce} Test to code radio: #{cb}1:%0.2f#{ce}" % (test_loc.to_f / code_loc.to_f)
69
+ puts " Code LOC: #{cb}#{code_loc}#{ce} Test LOC: #{cb}#{test_loc}#{ce} Code to test radio: #{cb}1:%0.2f#{ce}" % (test_loc.to_f / code_loc.to_f)
70
70
  puts
71
71
  end
@@ -74,8 +74,8 @@ module Merb
74
74
  # ==== Notes
75
75
  # If you pass a post body, the content-type will be set to URL-encoded.
76
76
  #
77
- #---
78
- # @public
77
+ # @api public
78
+ # @deprecated
79
79
  def fake_request(env = {}, opt = {})
80
80
  if opt[:post_body]
81
81
  req = opt[:post_body]
@@ -111,8 +111,8 @@ module Merb
111
111
  # ==== Notes
112
112
  # Does not use routes.
113
113
  #
114
- #---
115
- # @public
114
+ # @api public
115
+ # @deprecated
116
116
  def dispatch_to(controller_klass, action, params = {}, env = {}, &blk)
117
117
  params = merge_controller_and_action(controller_klass, action, params)
118
118
  dispatch_request(build_request(params, env), controller_klass, action.to_s, &blk)
@@ -124,6 +124,9 @@ module Merb
124
124
  # ==== Parameters
125
125
  # *controller_classes:: Controller classes to operate on in the context of the block.
126
126
  # &blk:: The context to operate on; optionally accepts the cookie jar as an argument.
127
+ #
128
+ # @api public
129
+ # @deprecated
127
130
  def with_cookies(*controller_classes, &blk)
128
131
  cookie_jar = CookieJar.new
129
132
  before_cb = lambda { |c| c.cookies.update(cookie_jar) }
@@ -166,8 +169,8 @@ module Merb
166
169
  # ==== Notes
167
170
  # Does not use routes.
168
171
  #
169
- #---
170
- # @public
172
+ # @api public
173
+ # @deprecated
171
174
  def dispatch_with_basic_authentication_to(controller_klass, action, username, password, params = {}, env = {}, &blk)
172
175
  env["X_HTTP_AUTHORIZATION"] = "Basic #{Base64.encode64("#{username}:#{password}")}"
173
176
 
@@ -175,6 +178,7 @@ module Merb
175
178
  dispatch_request(build_request(params, env), controller_klass, action.to_s, &blk)
176
179
  end
177
180
 
181
+ # @api private
178
182
  def merge_controller_and_action(controller_klass, action, params)
179
183
  params[:controller] = controller_klass.name.to_const_path
180
184
  params[:action] = action.to_s
@@ -203,8 +207,8 @@ module Merb
203
207
  # ==== Notes
204
208
  # Does not use routes.
205
209
  #
206
- #---
207
- # @public
210
+ # @api public
211
+ # @deprecated
208
212
  def build_request(params = {}, env = {})
209
213
  params = Merb::Request.params_to_query_string(params)
210
214
 
@@ -227,8 +231,9 @@ module Merb
227
231
  # &blk::
228
232
  # The controller is yielded to the block provided for actions *prior* to
229
233
  # the action being dispatched.
230
- #---
231
- # @public
234
+ #
235
+ # @api public
236
+ # @deprecated
232
237
  def get(path, params = {}, env = {}, &block)
233
238
  env[:request_method] = "GET"
234
239
  mock_request(path, params, env, &block)
@@ -246,8 +251,9 @@ module Merb
246
251
  # &blk::
247
252
  # The controller is yielded to the block provided for actions *prior* to
248
253
  # the action being dispatched.
249
- #---
250
- # @public
254
+ #
255
+ # @api public
256
+ # @deprecated
251
257
  def post(path, params = {}, env = {}, &block)
252
258
  env[:request_method] = "POST"
253
259
  mock_request(path, params, env, &block)
@@ -265,8 +271,8 @@ module Merb
265
271
  # &blk::
266
272
  # The controller is yielded to the block provided for actions *prior* to
267
273
  # the action being dispatched.
268
- #---
269
- # @public
274
+ #
275
+ # @api public
270
276
  def put(path, params = {}, env = {}, &block)
271
277
  env[:request_method] = "PUT"
272
278
  mock_request(path, params, env, &block)
@@ -284,8 +290,9 @@ module Merb
284
290
  # &blk::
285
291
  # The controller is yielded to the block provided for actions *prior* to
286
292
  # the action being dispatched.
287
- #---
288
- # @public
293
+ #
294
+ # @api public
295
+ # @deprecated
289
296
  def delete(path, params = {}, env = {}, &block)
290
297
  env[:request_method] = "DELETE"
291
298
  mock_request(path, params, env, &block)
@@ -313,8 +320,8 @@ module Merb
313
320
  # ==== Notes
314
321
  # Uses Routes.
315
322
  #
316
- #---
317
- # @semi-public
323
+ # @api plugin
324
+ # @deprecated
318
325
  def mock_request(path, params = {}, env= {}, &block)
319
326
  env[:request_method] ||= "GET"
320
327
  env[:request_uri], env[:query_string] = path.split('?')
@@ -352,8 +359,8 @@ module Merb
352
359
  # ==== Notes
353
360
  # Does not use routes.
354
361
  #
355
- #---
356
- # @public
362
+ # @api public
363
+ # @deprecated
357
364
  def dispatch_request(request, controller_klass, action, &blk)
358
365
  controller = controller_klass.new(request)
359
366
  yield controller if block_given?
@@ -378,8 +385,8 @@ module Merb
378
385
  # ==== Returns
379
386
  # Hash:: The parameters built based on the matching route.
380
387
  #
381
- #---
382
- # @semi-public
388
+ # @api plugin
389
+ # @deprecated
383
390
  def check_request_for_route(request)
384
391
  match = ::Merb::Router.match(request)
385
392
  if match[0].nil? && match[1].empty?