junior 0.1.0 → 0.1.1

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/HISTORY ADDED
@@ -0,0 +1,3 @@
1
+ 0.1.1 - 2010-01-09 - Send file helper, content type bug fix.
2
+ 0.1.0 - 2010-01-05 - Added Usher router and restful resources
3
+ 0.0.0 - 2009-12-31 - Initial Release
data/Rakefile CHANGED
@@ -12,7 +12,7 @@ begin
12
12
  gem.authors = ["Michael Wood"]
13
13
 
14
14
  gem.add_dependency 'rack', "~> 1.1.0"
15
- gem.add_dependency 'usher', "~> 0.6.2"
15
+ gem.add_dependency 'usher', "~> 0.6.3"
16
16
  gem.add_dependency 'tilt', "~> 0.4.0"
17
17
 
18
18
  gem.add_development_dependency 'rspec', '~> 1.2.9'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.0
1
+ 0.1.1
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{junior}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Michael Wood"]
12
- s.date = %q{2010-01-05}
12
+ s.date = %q{2010-01-09}
13
13
  s.description = %q{A Mini MVC Web Framework for Ruby built on Rack and a lot of inspiration from Sinatra}
14
14
  s.email = %q{mike@michaelwood.com}
15
15
  s.extra_rdoc_files = [
@@ -18,6 +18,7 @@ Gem::Specification.new do |s|
18
18
  ]
19
19
  s.files = [
20
20
  ".gitignore",
21
+ "HISTORY",
21
22
  "LICENSE",
22
23
  "README.md",
23
24
  "Rakefile",
@@ -52,20 +53,20 @@ Gem::Specification.new do |s|
52
53
 
53
54
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
54
55
  s.add_runtime_dependency(%q<rack>, ["~> 1.1.0"])
55
- s.add_runtime_dependency(%q<usher>, ["~> 0.6.2"])
56
+ s.add_runtime_dependency(%q<usher>, ["~> 0.6.3"])
56
57
  s.add_runtime_dependency(%q<tilt>, ["~> 0.4.0"])
57
58
  s.add_development_dependency(%q<rspec>, ["~> 1.2.9"])
58
59
  s.add_development_dependency(%q<yard>, ["~> 0.5.2"])
59
60
  else
60
61
  s.add_dependency(%q<rack>, ["~> 1.1.0"])
61
- s.add_dependency(%q<usher>, ["~> 0.6.2"])
62
+ s.add_dependency(%q<usher>, ["~> 0.6.3"])
62
63
  s.add_dependency(%q<tilt>, ["~> 0.4.0"])
63
64
  s.add_dependency(%q<rspec>, ["~> 1.2.9"])
64
65
  s.add_dependency(%q<yard>, ["~> 0.5.2"])
65
66
  end
66
67
  else
67
68
  s.add_dependency(%q<rack>, ["~> 1.1.0"])
68
- s.add_dependency(%q<usher>, ["~> 0.6.2"])
69
+ s.add_dependency(%q<usher>, ["~> 0.6.3"])
69
70
  s.add_dependency(%q<tilt>, ["~> 0.4.0"])
70
71
  s.add_dependency(%q<rspec>, ["~> 1.2.9"])
71
72
  s.add_dependency(%q<yard>, ["~> 0.5.2"])
@@ -14,22 +14,26 @@ module Junior
14
14
 
15
15
  #puts app.env['rack.input'].read
16
16
 
17
- controller = app.env[ 'usher.response' ].last.destination[ :controller ].to_s
18
-
19
- if controller[ '/' ] # a nested route
20
- controller = controller[(controller.rindex( '/' ) + 1)..controller.length]
21
- puts controller
22
- end
17
+ controller = app.env[ 'usher.response' ] ? app.env[ 'usher.response' ].last.destination[ :controller ].to_s : nil
18
+ if controller
19
+
20
+ if controller[ '/' ] # a nested route
21
+ controller = controller[(controller.rindex( '/' ) + 1)..controller.length]
22
+ puts controller
23
+ end
23
24
 
24
- action = app.env[ 'usher.response' ].last.destination[ :action ].to_s
25
- id = app.env[ 'usher.params' ][ :id ].to_s
25
+ action = app.env[ 'usher.response' ].last.destination[ :action ].to_s
26
+ id = app.env[ 'usher.params' ][ :id ].to_s
26
27
 
27
- controller_instance = controller.camelize.to_class.new(app, id)
28
+ controller_instance = controller.camelize.to_class.new(app, id)
28
29
 
29
- if controller_instance.respond_to?(action)
30
- controller_instance.send(action)
30
+ if controller_instance.respond_to?(action)
31
+ controller_instance.send(action)
32
+ else
33
+ controller_instance.not_found('Not found')
34
+ end
31
35
  else
32
- controller_instance.not_found('Not found')
36
+ Junior::Controller.new(app).not_found('Not found')
33
37
  end
34
38
  end
35
39
  end
@@ -65,7 +65,7 @@ module Junior
65
65
  # Set the Content-Type of the response body given a media type or file
66
66
  # extension.
67
67
  def content_type(type, params={})
68
- mime_type = self.mime_type(type)
68
+ mime_type = self.mime_type( ".#{type}" )
69
69
  fail "Unknown media type: %p" % type if mime_type.nil?
70
70
  if params.any?
71
71
  params = params.collect { |kv| "%s=%s" % kv }.join(', ')
@@ -84,6 +84,21 @@ module Junior
84
84
  response['Content-Disposition'] << params
85
85
  end
86
86
  end
87
+
88
+ # Set the last modified time of the resource (HTTP 'Last-Modified' header)
89
+ # and halt if conditional GET matches. The +time+ argument is a Time,
90
+ # DateTime, or other object that responds to +to_time+.
91
+ #
92
+ # When the current request includes an 'If-Modified-Since' header that
93
+ # matches the time specified, execution is immediately halted with a
94
+ # '304 Not Modified' response.
95
+ def last_modified(time)
96
+ time = time.to_time if time.respond_to?(:to_time)
97
+ time = time.httpdate if time.respond_to?(:httpdate)
98
+ response['Last-Modified'] = time
99
+ halt 304 if time == request.env['HTTP_IF_MODIFIED_SINCE']
100
+ time
101
+ end
87
102
 
88
103
  # Use the contents of the file at +path+ as the response body.
89
104
  def send_file(path, opts={})
@@ -108,4 +123,16 @@ module Junior
108
123
  not_found
109
124
  end
110
125
  end
126
+ end
127
+
128
+ # Rack response body used to deliver static files. The file contents are
129
+ # generated iteratively in 8K chunks.
130
+ class StaticFile < ::File #:nodoc:
131
+ alias_method :to_path, :path
132
+ def each
133
+ rewind
134
+ while buf = read(8192)
135
+ yield buf
136
+ end
137
+ end
111
138
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: junior
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Wood
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-01-05 00:00:00 -08:00
12
+ date: 2010-01-09 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -30,7 +30,7 @@ dependencies:
30
30
  requirements:
31
31
  - - ~>
32
32
  - !ruby/object:Gem::Version
33
- version: 0.6.2
33
+ version: 0.6.3
34
34
  version:
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: tilt
@@ -73,6 +73,7 @@ extra_rdoc_files:
73
73
  - README.md
74
74
  files:
75
75
  - .gitignore
76
+ - HISTORY
76
77
  - LICENSE
77
78
  - README.md
78
79
  - Rakefile