merb 0.5.1 → 0.5.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.
data/Rakefile CHANGED
@@ -168,7 +168,7 @@ end
168
168
 
169
169
  task :release => :package do
170
170
  if ENV["RELEASE"]
171
- sh %{rubyforge add_release merb merb "#{ENV["RELEASE"]}" pkg/#{NAME}-#{Merb::VERSION}.gem}
171
+ puts %{rubyforge add_release merb merb "#{ENV["RELEASE"]}" pkg/#{NAME}-#{Merb::VERSION}.gem}
172
172
  else
173
173
  puts "Usage: rake release RELEASE='Clever tag line goes here'"
174
174
  end
@@ -1 +1 @@
1
- 1274
1
+ 1297
@@ -131,7 +131,7 @@
131
131
  <div class="header">
132
132
  <h1><%= @exception.name.humanize %> <sup class="error_<%= @exception.class::STATUS %>"><%= @exception.class::STATUS %></sup></h1>
133
133
  <% if show_details = ::Merb::Config[:exception_details] -%>
134
- <h2><%= @exception.message %></h2>
134
+ <h2><%= ERB::Util.html_escape @exception.message %></h2>
135
135
  <% else -%>
136
136
  <h2>Sorry about that...</h2>
137
137
  <% end -%>
@@ -13,5 +13,5 @@ puts "Loading Application..."
13
13
  Merb::BootLoader.load_application
14
14
 
15
15
  # Load environment-specific configuration
16
- environment_config = File.join(Merb.root, 'config', 'environments', Merb.environment)
16
+ environment_config = File.join(Merb.root, 'config', 'environments', Merb.environment + '.rb')
17
17
  require environment_config if File.exist?(environment_config)
@@ -79,7 +79,7 @@ module Merb
79
79
  end
80
80
 
81
81
  def load_paths
82
- [ "/app/models/**/*.rb",
82
+ @load_paths ||= [ "/app/models/**/*.rb",
83
83
  "/app/controllers/application.rb",
84
84
  "/app/controllers/**/*.rb",
85
85
  "/app/helpers/**/*.rb",
@@ -64,10 +64,12 @@ module Merb
64
64
  #
65
65
  # +url+ - URL to redirect to; it can be either a relative or
66
66
  # fully-qualified URL.
67
+ # +permanent+ - Whether to use permanent redirection.
67
68
  #
68
- def redirect(url)
69
- Merb.logger.info("Redirecting to: #{url}")
70
- set_status(302)
69
+ def redirect(url, permanent = false)
70
+ status = permanent ? 301 : 302
71
+ Merb.logger.info("Redirecting to: #{url} status: #{status}")
72
+ set_status(status)
71
73
  headers['Location'] = url
72
74
  "<html><body>You are being <a href=\"#{url}\">redirected</a>.</body></html>"
73
75
  end
@@ -161,7 +161,7 @@ module Merb
161
161
  end
162
162
 
163
163
  # +format_extension+ dictates when named route URLs generated by the url
164
- # method will have a file extension. It will return either false or the format
164
+ # method will have a file extension. It will return either nil or the format
165
165
  # extension to append.
166
166
  #
167
167
  # ==== Configuration Options
@@ -192,12 +192,14 @@ module Merb
192
192
  # # => /products/3
193
193
  #
194
194
  def format_extension(new_params={})
195
- use_format = Merb::Config[:use_format_in_urls]
196
- if use_format.nil?
197
- prms = params.merge(new_params)
198
- use_format = prms[:format] != 'html' && prms[:format]
195
+ format = params.merge(new_params)[:format] || 'html'
196
+ if format != 'html' || always_use_format_extension?
197
+ format || 'html'
199
198
  end
200
- use_format
199
+ end
200
+
201
+ def always_use_format_extension?
202
+ Merb::Config[:use_format_in_urls]
201
203
  end
202
204
 
203
205
 
@@ -488,9 +488,6 @@ module Merb
488
488
  #
489
489
  # throw_content(:header, "Hello World")
490
490
  #
491
- # In Haml Templates, use the
492
- #
493
- #
494
491
  def throw_content(name, content = "", &block)
495
492
  content << capture(&block) if block_given?
496
493
  controller.thrown_content[name] << content
@@ -507,12 +504,42 @@ module Merb
507
504
  _buffer( binding ) << string
508
505
  end
509
506
 
507
+ # Creates a generic HTML tag. You can invoke it a variety of ways.
508
+ #
509
+ # tag :div
510
+ # # <div></div>
511
+ #
512
+ # tag :div, 'content'
513
+ # # <div>content</div>
514
+ #
515
+ # tag :div, :class => 'class'
516
+ # # <div class="class"></div>
517
+ #
518
+ # tag :div, 'content', :class => 'class'
519
+ # # <div class="class">content</div>
520
+ #
521
+ # tag :div do
522
+ # 'content'
523
+ # end
524
+ # # <div>content</div>
525
+ #
526
+ # tag :div, :class => 'class' do
527
+ # 'content'
528
+ # end
529
+ # # <div class="class">content</div>
530
+ #
531
+ def tag(name, contents = nil, attrs = {}, &block)
532
+ attrs = contents if contents.is_a?(Hash)
533
+ contents = capture(&block) if block_given?
534
+ open_tag(name, attrs) + contents.to_s + close_tag(name)
535
+ end
536
+
510
537
  # Creates the opening tag with attributes for the provided +name+
511
538
  # attrs is a hash where all members will be mapped to key="value"
512
539
  #
513
540
  # Note: This tag will need to be closed
514
541
  def open_tag(name, attrs = nil)
515
- "<#{name}#{(' ' + attrs.to_html_attributes) if attrs && !attrs.empty?}>"
542
+ "<#{name}#{' ' + attrs.to_html_attributes if attrs && !attrs.empty?}>"
516
543
  end
517
544
 
518
545
  # Creates a closing tag
@@ -525,7 +552,7 @@ module Merb
525
552
  # +name+ : the name of the tag to create
526
553
  # +attrs+ : a hash where all members will be mapped to key="value"
527
554
  def self_closing_tag(name, attrs = nil)
528
- "<#{name}#{' ' + attrs.to_html_attributes if attrs}/>"
529
- end
530
- end
555
+ "<#{name}#{' ' + attrs.to_html_attributes if attrs && !attrs.empty?}/>"
556
+ end
557
+ end
531
558
  end
@@ -1,5 +1,6 @@
1
1
  require 'merb/test/fake_request'
2
2
  require 'merb/test/hpricot'
3
+ require 'merb/test/multipart'
3
4
  include HpricotTestHelper
4
5
 
5
6
  module Merb
@@ -14,16 +15,41 @@ module Merb
14
15
  end
15
16
 
16
17
  # For integration/functional testing
17
- def request(verb, path)
18
+ #
19
+ # This helper is the basis of the <tt>get</tt>, <tt>post</tt>, <tt>put</tt>, and <tt>delete</tt> helper
20
+ #
21
+ # By default a fake request is yielded to the block for local modification.
22
+ # +opts+ takes any options that you want pass to the methods, plus some reserved ones
23
+ #
24
+ # ===Yielding
25
+ # You can get the request helper to yield either a fake request object, or a controller
26
+ # Do this with the +:yield+ option. Values can be +:request+, or +:controller+. +:request+ is default
27
+ # When you yield the controller, it is available inside the block with the controller method, so you don't need to
28
+ # explicitly set it in the block chute.
29
+ # ====Example
30
+ # request( :get, '/', :yields => :controller) do |controller|
31
+ # controller.stub!(:render)
32
+ # end
33
+ #
34
+ # You can also pass in a fake request object which may be useful if your yielding a controller.
35
+ # Use the opts[:fake_request] to do this.
36
+ # ====Example
37
+ # request( :get, '/', :yields => :controller, :fake_request => @my_fake_request) do
38
+ # controller.stub!(:render)
39
+ # end
40
+ def request(verb, path, opts = {}, &block)
18
41
  response = StringIO.new
19
- @request = Merb::Test::FakeRequest.with(path, :request_method => (verb.to_s.upcase rescue 'GET'))
20
-
21
- yield @request if block_given?
22
-
23
- @controller, @action = Merb::Dispatcher.handle @request, response
42
+
43
+ request = opts.delete(:fake_request) || Merb::Test::FakeRequest.with(path, opts.merge(:request_method => (verb.to_s.upcase rescue 'GET')))
44
+ yield_to_controller = opts.delete(:yields)
45
+
46
+ if yield_to_controller == :controller
47
+ request_yielding_controller(request, response, &block)
48
+ else
49
+ request_yielding_request(request, response, &block)
50
+ end
24
51
  end
25
-
26
-
52
+
27
53
  # Makes a get request routed to +path+ with any options encoded into the
28
54
  # request url
29
55
  # Example
@@ -31,7 +57,7 @@ module Merb
31
57
  # get "/users", :user => {:login => "dave", :email => "email@example.com"}
32
58
  # }}}
33
59
  def get(path, opts = {}, &block)
34
- request("GET",path_with_options(path,opts), &block)
60
+ request("GET", path, opts, &block)
35
61
  end
36
62
 
37
63
  # Makes a post request routed to +path+ with any options encoded into the
@@ -41,7 +67,7 @@ module Merb
41
67
  # post "/users", :user => {:login => "dave", :email => "email@example.com"}
42
68
  # }}}
43
69
  def post(path, opts = {}, &block)
44
- request("POST", path_with_options(path,opts), &block)
70
+ request("POST",path, opts, &block)
45
71
  end
46
72
 
47
73
  # Makes a put request routed to +path+ with any options encoded into the
@@ -51,7 +77,7 @@ module Merb
51
77
  # put "/users/1", :user => {:login => "dave", :email => "email@example.com"}
52
78
  # }}}
53
79
  def put(path,opts = {}, &block)
54
- request("PUT", path_with_options(path,opts), &block)
80
+ request("PUT",path, opts, &block)
55
81
  end
56
82
 
57
83
  # Makes a delete request routed to +path+ with any options encoded into the request url
@@ -60,7 +86,21 @@ module Merb
60
86
  # delete "/users/1", :user => {:login => "dave", :email => "email@example.com"}
61
87
  # }}}
62
88
  def delete(path, opts= {}, &block)
63
- request("DELETE", path_with_options(path,opts), &block)
89
+ request("DELETE",path, opts, &block)
90
+ end
91
+
92
+ # Posts multipart form data to a path
93
+ # pass the +path+ to send and the parameters. For file uploads, just include a file as the option value.
94
+ # ===Example
95
+ # multipart_post("/my_collection", :foo => "bar", :user => { :login => "joe", :image => File.open("my_image.png")})
96
+ def multipart_post(path, params = {}, &block)
97
+ multipart_request(path, params.merge!(:request_method => 'POST'), &block)
98
+ end
99
+
100
+ # Posts multipart form data to a path
101
+ # Same as +multipart_post+ but used for PUT(ting) data to the server
102
+ def multipart_put(path, params = {}, &block)
103
+ multipart_request(path, params.merge!(:request_method => 'PUT'), &block)
64
104
  end
65
105
 
66
106
  def controller
@@ -130,6 +170,75 @@ module Merb
130
170
  path = path << "?" << params_to_query_string(opts) unless opts.empty?
131
171
  path
132
172
  end
173
+
174
+ protected
175
+
176
+ def request_yielding_request(request, response, &block)
177
+ # response = StringIO.new
178
+ # @request = Merb::Test::FakeRequest.with(path, :request_method => (verb.to_s.upcase rescue 'GET'))
179
+ @request = request
180
+
181
+ yield @request if block_given?
182
+
183
+ @controller, @action = Merb::Dispatcher.handle @request, response
184
+ end
185
+
186
+ def request_yielding_controller(request, response, &block)
187
+ # response = StringIO.new
188
+ # @request = Merb::Test::FakeRequest.with(path, :request_method => (verb.to_s.upcase rescue 'GET'))
189
+ @request = Merb::Request.new(request)
190
+
191
+ check_request_for_route(@request)
192
+
193
+ dispatch_fake_request(@request, response, &block)
194
+ end
195
+
196
+ def multipart_request(path, params = {}, &block)
197
+ response = StringIO.new
198
+ request = request_with_multipart_params(path, params)
199
+ check_request_for_route(request)
200
+ dispatch_fake_request(request, response, &block)
201
+ end
202
+
203
+
204
+ def check_request_for_route(request)
205
+ if request.route_params.empty?
206
+ raise ControllerExceptions::BadRequest, "No routes match the request"
207
+ elsif request.controller_name.nil?
208
+ raise ControllerExceptions::BadRequest, "Route matched, but route did not specify a controller"
209
+ end
210
+ end
211
+
212
+ # Used for yielding a controller with request and multipart helpers
213
+ def dispatch_fake_request(request, response, status = 200, &block)
214
+ klass = request.controller_class
215
+ @controller = klass.build(request, response, status)
216
+
217
+ @controller.send(:setup_session)
218
+ @controller.stub!(:setup_session).and_return(true)
219
+
220
+ yield @controller if block_given?
221
+
222
+ @controller.dispatch(request.action)
223
+ [@controller, request.action]
224
+
225
+ rescue => exception
226
+ exception = Dispatcher.send(:controller_exception, exception)
227
+ @controller, @action = Dispatcher.send(:dispatch_exception, request, response, exception)
228
+ end
229
+
230
+ def request_with_multipart_params(path, params = {})
231
+ request_method = params.delete(:request_method) || "GET"
232
+ request = Merb::Test::FakeRequest.new(:request_uri => path)
233
+ m = Merb::Test::Multipart::Post.new(params)
234
+ body, head = m.to_multipart
235
+ request['REQUEST_METHOD'] = request_method
236
+ request['CONTENT_TYPE'] = head
237
+ request['CONTENT_LENGTH'] = body.length
238
+ request.post_body = body
239
+ Merb::Request.new(request)
240
+ end
241
+
133
242
  end
134
243
  end
135
244
  end
@@ -38,12 +38,19 @@ module Merb
38
38
  push_params(params)
39
39
  end
40
40
 
41
- def push_params(params)
41
+ def push_params(params, prefix = nil)
42
42
  params.sort_by {|k| k.to_s}.each do |key, value|
43
+ param_key = prefix.nil? ? key : "#{prefix}[#{key}]"
43
44
  if value.respond_to?(:read)
44
- @multipart_params << FileParam.new(key, value.path, value.read)
45
+ @multipart_params << FileParam.new(param_key, value.path, value.read)
45
46
  else
46
- @multipart_params << Param.new(key, value)
47
+ if value.is_a?(Hash) || value.is_a?(Mash)
48
+ value.keys.each do |k|
49
+ push_params(value, param_key)
50
+ end
51
+ else
52
+ @multipart_params << Param.new(param_key, value)
53
+ end
47
54
  end
48
55
  end
49
56
  end
@@ -52,7 +59,8 @@ module Merb
52
59
  query = @multipart_params.collect { |param| "--" + BOUNDARY + "\r\n" + param.to_multipart }.join("") + "--" + BOUNDARY + "--"
53
60
  return query, CONTENT_TYPE
54
61
  end
55
- end
62
+ end
63
+
56
64
  end
57
65
  end
58
66
  end
@@ -5,7 +5,7 @@ module Merb
5
5
  class BeRedirect
6
6
  def matches?(target)
7
7
  @target = target
8
- target == 302
8
+ [301, 302].include? target
9
9
  end
10
10
  def failure_message
11
11
  "expected to redirect"
@@ -75,7 +75,7 @@ module Merb
75
75
  (400..499).include?(@target.status)
76
76
  end
77
77
 
78
- def failurs_message
78
+ def failure_message
79
79
  "expected #{@target} to be missing but was #{@target.status}"
80
80
  end
81
81
 
@@ -1,5 +1,5 @@
1
1
  module Merb
2
- VERSION = '0.5.1' unless defined?(::Merb::VERSION)
2
+ VERSION = '0.5.2' unless defined?(::Merb::VERSION)
3
3
 
4
4
  class << self
5
5
  def svn_revision
@@ -41,6 +41,6 @@ module Merb
41
41
  # You should never check in to trunk with this changed. It should
42
42
  # stay 'svn'. Change it to nil in release tags.
43
43
  unless defined?(::Merb::RELEASE)
44
- RELEASE = "svn#{" r#{svn_revision_from_file}" if svn_revision_from_file}"
44
+ RELEASE = nil #"svn#{" r#{svn_revision_from_file}" if svn_revision_from_file}"
45
45
  end
46
46
  end
@@ -1,7 +1,7 @@
1
1
  def install_merb_script
2
2
  script_filepath = Merb.root / 'script/merb'
3
3
  FileUtils.rm script_filepath if File.exist? script_filepath
4
- tmpl = "#!/usr/bin/env ruby\nrequire File.expand_path(File.dirname(__FILE__)+'/../framework/merb/server')\nMerb::Server.run\n"
4
+ tmpl = "#!/usr/bin/env ruby\nrequire File.expand_path(File.dirname(__FILE__)+'/../config/merb/boot')\nrequire File.expand_path(File.dirname(__FILE__)+'/../framework/merb/server')\nMerb::Server.run\n"
5
5
  File.open(script_filepath, 'wb') {|f|
6
6
  f.write tmpl
7
7
  f.chmod(0744)
@@ -94,6 +94,9 @@ describe "Controller", "redirect spec helpers" do
94
94
  end
95
95
  def show
96
96
  end
97
+ def permanent
98
+ redirect("/foo",:permanent)
99
+ end
97
100
  end
98
101
 
99
102
  before(:each) do
@@ -113,4 +116,11 @@ describe "Controller", "redirect spec helpers" do
113
116
  @controller.should_not redirect
114
117
  @controller.should_not redirect_to("/foo")
115
118
  end
119
+
120
+ it "should be able to match permanent redirects" do
121
+ @controller.dispatch('permanent')
122
+ @controller.status.should be_redirect
123
+ @controller.should redirect
124
+ @controller.should redirect_to("/foo")
125
+ end
116
126
  end
@@ -1,11 +1,8 @@
1
1
  require File.dirname(__FILE__) + '/../spec_helper'
2
- require File.dirname(__FILE__) + '/../fixtures/controllers/dispatch_spec_controllers'
3
-
4
- $TESTING = true
2
+ require_fixtures '/controllers/dispatch_spec_controllers'
5
3
 
6
4
  describe Merb::Dispatcher do
7
-
8
- before(:all) do
5
+ before :all do
9
6
  Merb::Config[:allow_reloading] = false
10
7
  Merb::Router.prepare do |r|
11
8
  r.resource :icon
@@ -288,6 +285,7 @@ describe Merb::Dispatcher do
288
285
  controller.params[:id].should == '1'
289
286
  controller.body.should == :edit
290
287
  end
288
+
291
289
  it "should handle request: GET /posts/1/edit and return Posts#edit" do
292
290
  controller, action = request(:get, '/posts/1/edit')
293
291
  controller.class.should == Posts
@@ -336,7 +334,6 @@ describe Merb::Dispatcher do
336
334
  controller.body.should == :create
337
335
  end
338
336
 
339
-
340
337
  it "should handle request: POST /posts.xml and return Posts#create format xml" do
341
338
  controller, action = request(:post, '/posts.xml')
342
339
  controller.class.should == Posts
@@ -526,6 +523,6 @@ describe Merb::Dispatcher do
526
523
  it "should support actionargs with nil as defaults" do
527
524
  controller, action = request(:get, '/bar/bam?a=1')
528
525
  controller.body.should == "1 nil"
529
- end
526
+ end
530
527
  end
531
528
  end
@@ -46,4 +46,5 @@ describe Merb::Test::Multipart::Post, '.to_multipart' do
46
46
  content_type.should == "multipart/form-data, boundary=----------0xKhTmLbOuNdArY"
47
47
  query.should == "------------0xKhTmLbOuNdArY\r\nContent-Disposition: form-data; name=\"file\"; filename=\"file.txt\"\r\nContent-Type: text/plain\r\n\r\nfile contents\r\n------------0xKhTmLbOuNdArY\r\nContent-Disposition: form-data; name=\"normal\"\r\n\r\nnormal_param\r\n------------0xKhTmLbOuNdArY--"
48
48
  end
49
- end
49
+ end
50
+
@@ -272,6 +272,7 @@ describe Merb::Request do
272
272
  lambda {request.method}.should_not raise_error
273
273
  request.method.should == :get
274
274
  end
275
+
275
276
 
276
277
  it "multipart_params should return an empty hash if the request is not multipart" do
277
278
  request = Merb::Request.new(@in)
@@ -1,4 +1,5 @@
1
1
  require File.dirname(__FILE__) + '/../spec_helper'
2
+ require_fixtures '/controllers/render_spec_controllers'
2
3
 
3
4
  describe "View Context", "image tag" do
4
5
 
@@ -309,26 +310,57 @@ describe "View Context", "throw_content, catch_content" do
309
310
  end
310
311
 
311
312
  describe Merb::ViewContextMixin do
312
-
313
+ # The use of this here is to avoid conflict with the tag()
314
+ # Hpricot test helper invoked via match_tag() when testing the
315
+ # tag() view context helper.
316
+ class FakeViewContext
317
+ include Merb::ErubisCaptureMixin, Merb::ViewContextMixin
318
+ end
319
+
320
+ before :each do
321
+ @view = FakeViewContext.new
322
+ end
323
+
313
324
  it "should render the start of a tag" do
314
- open_tag(:div).should == "<div>"
325
+ @view.open_tag(:div).should match_tag(:div)
315
326
  end
316
-
327
+
317
328
  it "should render the start of a tag with attributes" do
318
- tag = open_tag(:div, :id => 1, :class => "CLASS")
319
- tag.should match_tag(:div, :id => "1", :class => "CLASS")
329
+ @view.open_tag(:div, :id => 1, :class => "CLASS").
330
+ should match_tag(:div, :id => "1", :class => "CLASS")
320
331
  end
321
-
332
+
322
333
  it "should render a self closing tag" do
323
- self_closing_tag(:br).should == "<br/>"
334
+ @view.self_closing_tag(:br).should match_tag(:br)
324
335
  end
325
-
336
+
326
337
  it "should render a self closing tag with attributes" do
327
- self_closing_tag(:img, :src => "SOURCE").should match_tag(:img, :src => "SOURCE")
338
+ @view.self_closing_tag(:img, :src => "SOURCE").
339
+ should match_tag(:img, :src => "SOURCE")
328
340
  end
329
-
341
+
330
342
  it "should render a closing tag" do
331
- close_tag(:div).should == "</div>"
343
+ @view.close_tag(:div).should == "</div>"
344
+ end
345
+
346
+ it 'should render a tag with content' do
347
+ @view.tag(:div, 'divs rool').should match_tag(:div, :content => 'divs rool')
348
+ end
349
+
350
+ it 'should render a tag with content and attributes' do
351
+ @view.tag(:div, 'divs rool', :class => 'classy').
352
+ should match_tag(:div, :content => 'divs rool', :class => 'classy')
353
+ end
354
+
355
+ it 'should render a tag using a block for its contents' do
356
+ @view.tag(:div) do
357
+ 'divs rool'
358
+ end.should match_tag(:div, :content => 'divs rool')
359
+ end
360
+
361
+ it 'should render a tag with attributes using a block for its contents' do
362
+ @view.tag(:div, :class => 'classy') do
363
+ 'divs rool'
364
+ end.should match_tag(:div, :content => 'divs rool', :class => 'classy')
332
365
  end
333
-
334
366
  end
@@ -14,6 +14,9 @@ require 'merb'
14
14
  require 'merb/test/helper'
15
15
 
16
16
  FIXTURES = File.expand_path(File.join(File.dirname(__FILE__), 'fixtures')) unless defined?(FIXTURES)
17
+ def require_fixtures(path)
18
+ require File.expand_path(File.join(FIXTURES, path))
19
+ end
17
20
 
18
21
  require File.join(File.dirname(__FILE__), "spec_helpers", "url_shared_behaviour")
19
22
 
@@ -1,3 +1,5 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../fixtures/models/router_spec_models')
2
+
1
3
  describe "class with general url generation", :shared => true do
2
4
 
3
5
  before(:all) do
metadata CHANGED
@@ -1,33 +1,90 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.4
3
- specification_version: 1
4
2
  name: merb
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.5.1
7
- date: 2008-01-10 00:00:00 -08:00
8
- summary: Merb == Mongrel + Erb. Pocket rocket web framework.
9
- require_paths:
10
- - lib
11
- email: ez@engineyard.com
12
- homepage: http://merb.devjavu.com
13
- rubyforge_project:
14
- description: Merb == Mongrel + Erb. Pocket rocket web framework.
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 1.8.4
24
- version:
4
+ version: 0.5.2
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - Ezra Zygmuntowicz
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-01-14 00:00:00 -06:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: mongrel
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
23
+ version:
24
+ - !ruby/object:Gem::Dependency
25
+ name: erubis
26
+ version_requirement:
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: "0"
32
+ version:
33
+ - !ruby/object:Gem::Dependency
34
+ name: mime-types
35
+ version_requirement:
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: "0"
41
+ version:
42
+ - !ruby/object:Gem::Dependency
43
+ name: rubigen
44
+ version_requirement:
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: "0"
50
+ version:
51
+ - !ruby/object:Gem::Dependency
52
+ name: rake
53
+ version_requirement:
54
+ version_requirements: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: "0"
59
+ version:
60
+ - !ruby/object:Gem::Dependency
61
+ name: ruby2ruby
62
+ version_requirement:
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: "0"
68
+ version:
69
+ - !ruby/object:Gem::Dependency
70
+ name: json_pure
71
+ version_requirement:
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: "0"
77
+ version:
78
+ description: Merb == Mongrel + Erb. Pocket rocket web framework.
79
+ email: ez@engineyard.com
80
+ executables:
81
+ - merb
82
+ extensions: []
83
+
84
+ extra_rdoc_files:
85
+ - README
86
+ - LICENSE
87
+ - TODO
31
88
  files:
32
89
  - LICENSE
33
90
  - README
@@ -401,81 +458,31 @@ files:
401
458
  - test_unit_generators/merb_model_test/templates/model_test_unit_template.erb
402
459
  - script/destroy
403
460
  - script/generate
404
- test_files: []
405
-
461
+ has_rdoc: true
462
+ homepage: http://merb.devjavu.com
463
+ post_install_message:
406
464
  rdoc_options: []
407
465
 
408
- extra_rdoc_files:
409
- - README
410
- - LICENSE
411
- - TODO
412
- executables:
413
- - merb
414
- extensions: []
415
-
466
+ require_paths:
467
+ - lib
468
+ required_ruby_version: !ruby/object:Gem::Requirement
469
+ requirements:
470
+ - - ">="
471
+ - !ruby/object:Gem::Version
472
+ version: 1.8.4
473
+ version:
474
+ required_rubygems_version: !ruby/object:Gem::Requirement
475
+ requirements:
476
+ - - ">="
477
+ - !ruby/object:Gem::Version
478
+ version: "0"
479
+ version:
416
480
  requirements:
417
481
  - install the json gem to get faster json parsing
418
- dependencies:
419
- - !ruby/object:Gem::Dependency
420
- name: mongrel
421
- version_requirement:
422
- version_requirements: !ruby/object:Gem::Version::Requirement
423
- requirements:
424
- - - ">"
425
- - !ruby/object:Gem::Version
426
- version: 0.0.0
427
- version:
428
- - !ruby/object:Gem::Dependency
429
- name: erubis
430
- version_requirement:
431
- version_requirements: !ruby/object:Gem::Version::Requirement
432
- requirements:
433
- - - ">"
434
- - !ruby/object:Gem::Version
435
- version: 0.0.0
436
- version:
437
- - !ruby/object:Gem::Dependency
438
- name: mime-types
439
- version_requirement:
440
- version_requirements: !ruby/object:Gem::Version::Requirement
441
- requirements:
442
- - - ">"
443
- - !ruby/object:Gem::Version
444
- version: 0.0.0
445
- version:
446
- - !ruby/object:Gem::Dependency
447
- name: rubigen
448
- version_requirement:
449
- version_requirements: !ruby/object:Gem::Version::Requirement
450
- requirements:
451
- - - ">"
452
- - !ruby/object:Gem::Version
453
- version: 0.0.0
454
- version:
455
- - !ruby/object:Gem::Dependency
456
- name: rake
457
- version_requirement:
458
- version_requirements: !ruby/object:Gem::Version::Requirement
459
- requirements:
460
- - - ">"
461
- - !ruby/object:Gem::Version
462
- version: 0.0.0
463
- version:
464
- - !ruby/object:Gem::Dependency
465
- name: ruby2ruby
466
- version_requirement:
467
- version_requirements: !ruby/object:Gem::Version::Requirement
468
- requirements:
469
- - - ">"
470
- - !ruby/object:Gem::Version
471
- version: 0.0.0
472
- version:
473
- - !ruby/object:Gem::Dependency
474
- name: json_pure
475
- version_requirement:
476
- version_requirements: !ruby/object:Gem::Version::Requirement
477
- requirements:
478
- - - ">"
479
- - !ruby/object:Gem::Version
480
- version: 0.0.0
481
- version:
482
+ rubyforge_project:
483
+ rubygems_version: 0.9.5
484
+ signing_key:
485
+ specification_version: 2
486
+ summary: Merb == Mongrel + Erb. Pocket rocket web framework.
487
+ test_files: []
488
+