junior 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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