sinatra-sinatra 0.8.10 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGES CHANGED
@@ -1,4 +1,4 @@
1
- = 0.9.0 (unreleased)
1
+ = 0.9.0 / 2009-01-18
2
2
 
3
3
  * Works with and requires Rack >= 0.9.1
4
4
 
@@ -45,6 +45,10 @@
45
45
  has the status code specified. It's also possible to register an error
46
46
  page for a range of status codes: "error(500..599)".
47
47
 
48
+ * In-file templates are now automatically imported from the file that
49
+ requires 'sinatra'. The use_in_file_templates! method is still available
50
+ for loading templates from other files.
51
+
48
52
  * Sinatra's testing support is no longer dependent on Test::Unit. Requiring
49
53
  'sinatra/test' adds the Sinatra::Test module and Sinatra::TestHarness
50
54
  class, which can be used with any test framework. The 'sinatra/test/unit',
data/README.rdoc CHANGED
@@ -165,12 +165,13 @@ other templates.
165
165
 
166
166
  Templates may be defined at the end of the source file:
167
167
 
168
+ require 'rubygems'
169
+ require 'sinatra'
170
+
168
171
  get '/' do
169
172
  haml :index
170
173
  end
171
174
 
172
- use_in_file_templates!
173
-
174
175
  __END__
175
176
 
176
177
  @@ layout
@@ -180,6 +181,11 @@ Templates may be defined at the end of the source file:
180
181
  @@ index
181
182
  %div.title Hello world!!!!!
182
183
 
184
+ NOTE: Sinatra will automaticly load any in-file-templates in the
185
+ source file that first required sinatra. If you have in-file-templates
186
+ in another source file you will need to explicitly call
187
+ +use_in_file_templates! on main in that file.
188
+
183
189
  It's also possible to define named templates using the top-level template
184
190
  method:
185
191
 
data/Rakefile CHANGED
@@ -57,7 +57,12 @@ file package('.gem') => %w[dist/ sinatra.gemspec] + spec.files do |f|
57
57
  end
58
58
 
59
59
  file package('.tar.gz') => %w[dist/] + spec.files do |f|
60
- sh "git archive --format=tar HEAD | gzip > #{f.name}"
60
+ sh <<-SH
61
+ git archive \
62
+ --prefix=sinatra-#{source_version}/ \
63
+ --format=tar \
64
+ HEAD | gzip > #{f.name}
65
+ SH
61
66
  end
62
67
 
63
68
  # Rubyforge Release / Publish Tasks ==================================
data/lib/sinatra.rb CHANGED
@@ -1,4 +1,8 @@
1
- $LOAD_PATH.unshift File.dirname(__FILE__)
1
+ libdir = File.dirname(__FILE__)
2
+ $LOAD_PATH.unshift(libdir) unless $LOAD_PATH.include?(libdir)
3
+
2
4
  require 'sinatra/base'
3
5
  require 'sinatra/main'
4
6
  require 'sinatra/compat'
7
+
8
+ use_in_file_templates!
data/lib/sinatra/base.rb CHANGED
@@ -4,7 +4,7 @@ require 'rack'
4
4
  require 'rack/builder'
5
5
 
6
6
  module Sinatra
7
- VERSION = '0.8.10'
7
+ VERSION = '0.9.0'
8
8
 
9
9
  class Request < Rack::Request
10
10
  def user_agent
@@ -380,14 +380,8 @@ module Sinatra
380
380
  Hash.new {|hash,key| hash[key.to_s] if Symbol === key }
381
381
  end
382
382
 
383
- def invoke(handler)
384
- res = catch(:halt) {
385
- if handler.respond_to?(:call)
386
- instance_eval(&handler)
387
- else
388
- send(handler)
389
- end
390
- }
383
+ def invoke(block)
384
+ res = catch(:halt) { instance_eval(&block) }
391
385
  case
392
386
  when res.respond_to?(:to_str)
393
387
  @response.body = [res]
@@ -499,8 +493,13 @@ module Sinatra
499
493
  end
500
494
 
501
495
  def use_in_file_templates!
502
- line = caller.detect { |s| s !~ /lib\/sinatra.*\.rb/ &&
503
- s !~ /\(.*\)/ }
496
+ line = caller.detect do |s|
497
+ [
498
+ /lib\/sinatra.*\.rb/,
499
+ /\(.*\)/,
500
+ /rubygems\/custom_require\.rb/
501
+ ].all? { |x| s !~ x }
502
+ end
504
503
  file = line.sub(/:\d+.*$/, '')
505
504
  if data = ::IO.read(file).split('__END__')[1]
506
505
  data.gsub!(/\r\n/, "\n")
@@ -562,10 +561,10 @@ module Sinatra
562
561
 
563
562
  def get(path, opts={}, &block)
564
563
  conditions = @conditions.dup
565
- _, _, _, method_name = route('GET', path, opts, &block)
564
+ route('GET', path, opts, &block)
566
565
 
567
566
  @conditions = conditions
568
- head(path, opts) { invoke(method_name) ; [] }
567
+ head(path, opts) { invoke(block) ; [] }
569
568
  end
570
569
 
571
570
  def put(path, opts={}, &bk); route 'PUT', path, opts, &bk; end
@@ -574,21 +573,20 @@ module Sinatra
574
573
  def head(path, opts={}, &bk); route 'HEAD', path, opts, &bk; end
575
574
 
576
575
  private
577
- def route(method, path, opts={}, &block)
576
+ def route(verb, path, opts={}, &block)
578
577
  host_name opts[:host] if opts.key?(:host)
579
578
  user_agent opts[:agent] if opts.key?(:agent)
580
579
  accept_mime_types opts[:provides] if opts.key?(:provides)
581
580
 
582
581
  pattern, keys = compile(path)
583
582
  conditions, @conditions = @conditions, []
584
- method_name = "route { #{method} #{path} }"
585
- nmethods = instance_methods.grep(rx = /#{Regexp.escape(method_name)}/).size
586
- method_name += " [#{nmethods}]"
587
583
 
588
- define_method(method_name, &block)
584
+ define_method "#{verb} #{path}", &block
585
+ unbound_method = instance_method("#{verb} #{path}")
586
+ block = lambda { unbound_method.bind(self).call }
589
587
 
590
- (routes[method] ||= []).
591
- push([pattern, keys, conditions, method_name]).last
588
+ (routes[verb] ||= []).
589
+ push([pattern, keys, conditions, block]).last
592
590
  end
593
591
 
594
592
  def compile(path)
@@ -805,6 +803,7 @@ module Sinatra
805
803
  def self.reload!
806
804
  @reloading = true
807
805
  superclass.send :inherited, self
806
+ $LOADED_FEATURES.delete("sinatra.rb")
808
807
  ::Kernel.load app_file
809
808
  @reloading = false
810
809
  end
data/sinatra.gemspec CHANGED
@@ -3,8 +3,8 @@ Gem::Specification.new do |s|
3
3
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
4
4
 
5
5
  s.name = 'sinatra'
6
- s.version = '0.8.10'
7
- s.date = '2009-01-16'
6
+ s.version = '0.9.0'
7
+ s.date = '2009-01-18'
8
8
 
9
9
  s.description = "Classy web-development dressed in a DSL"
10
10
  s.summary = "Classy web-development dressed in a DSL"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-sinatra
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.10
4
+ version: 0.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Blake Mizerany
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-01-16 00:00:00 -08:00
12
+ date: 2009-01-18 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency