cehoffman-sinatra-respond_to 0.3.3 → 0.3.4

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/README.markdown CHANGED
@@ -5,10 +5,10 @@
5
5
 
6
6
  require 'sinatra'
7
7
  require 'sinatra/respond_to'
8
-
8
+
9
9
  get '/posts' do
10
10
  @posts = Post.recent
11
-
11
+
12
12
  respond_to do |wants|
13
13
  wants.html { haml :posts } # => views/posts.html.haml, also sets content_type to text/html
14
14
  wants.rss { haml :posts } # => views/posts.rss.haml, also sets content_type to application/rss+xml
@@ -18,7 +18,7 @@
18
18
 
19
19
  get '/post/:id' do
20
20
  @post = Post.find(params[:id])
21
-
21
+
22
22
  respond_to do |wants|
23
23
  wants.html { haml :post } # => views/post.html.haml, also sets content_type to text/html
24
24
  wants.xhtml { haml :post } # => views/post.xhtml.haml, also sets content_type to application/xhtml+xml
@@ -26,10 +26,10 @@
26
26
  wants.js { erb :post } # => views/post.js.erb, also sets content_type to application/javascript
27
27
  end
28
28
  end
29
-
29
+
30
30
  get '/comments/:id' do
31
31
  @comment = Comment.find(params[:id])
32
-
32
+
33
33
  respond_to do |wants|
34
34
  wants.html { haml :comment } # => views/comment.html.haml, also sets content_type to text/html
35
35
  wants.json { @comment.to_json } # => sets content_type to application/json
@@ -37,6 +37,20 @@
37
37
  end
38
38
  end
39
39
 
40
+ To change the character set of the response, there is a <tt>charset</tt> helper. For example
41
+
42
+ get '/iso-8859-1' do
43
+ charset 'iso-8859-1'
44
+ "This is now sent using iso-8859-1 character set"
45
+ end
46
+
47
+ get '/respond_to-mixed' do
48
+ respond_to do |wants|
49
+ wants.html { charset 'iso-8859-1'; "Some html in iso-8859-1" }
50
+ wants.xml { builder :utf-8-xml } # => this is returned in the default character set
51
+ end
52
+ end
53
+
40
54
  ## Configuration
41
55
 
42
56
  There a few options available for configuring the default behavior of respond_to using Sinatra's
@@ -61,16 +75,17 @@ Due to the way respond\_to works, all incoming requests have the extension strip
61
75
  This causes routes like the following to fail.
62
76
 
63
77
  get '/style.css' do
78
+ content_type :css, :charset => 'utf-8'
64
79
  sass :style # => renders views/style.sass
65
80
  end
66
-
67
- They need to be changed to the following
81
+
82
+ They need to be changed to the following. Note that you no longer have to set the content\_type or charset.
68
83
 
69
84
  get '/style' do
70
85
  sass :style # => renders views/style.css.sass
71
86
  end
72
-
73
- If you want to ensure the route only gets called for css requests try this
87
+
88
+ If you want to ensure the route only gets called for css requests try this. This will use sinatra's built in accept header matching.
74
89
 
75
90
  get '/style', :provides => :css do
76
91
  sass :style
data/Rakefile CHANGED
@@ -11,4 +11,20 @@ begin
11
11
  end
12
12
  rescue LoadError
13
13
  puts "Jewler not available. Install it with sugo gem install technicalpickles-jeweler -s http://gems.github.com"
14
+ end
15
+
16
+ begin
17
+ require 'spec/rake/spectask'
18
+ desc "Run specs"
19
+ Spec::Rake::SpecTask.new do |t|
20
+ t.spec_files = FileList['spec/*_spec.rb']
21
+ t.spec_opts = %w(-fp --color)
22
+
23
+ t.rcov = true
24
+ t.rcov_opts << '--text-summary'
25
+ t.rcov_opts << '--sort' << 'coverage' << '--sort-reverse'
26
+ t.rcov_opts << '--exclude' << '.gem,pkg,spec'
27
+ end
28
+ rescue LoadError
29
+ puts "RSpec not available. Install it with sudo gem install rspec."
14
30
  end
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 3
2
+ :patch: 4
3
3
  :major: 0
4
4
  :minor: 3
@@ -1,3 +1,5 @@
1
+ require 'sinatra/base'
2
+
1
3
  # Simple note, accept header parsing was looked at but deamed
2
4
  # too much of an irregularity to deal with. Problems with the header
3
5
  # differences from IE, Firefox, Safari, and every other UA causes
@@ -38,12 +40,14 @@ module Sinatra
38
40
  #
39
41
  # and the format will automatically be available in as <tt>format</tt>
40
42
  app.before do
41
- unless options.static? && options.public? && ["GET", "HEAD"].include?(request.request_method) && static_file?(unescape(request.path_info))
43
+ unless options.static? && options.public? && ["GET", "HEAD"].include?(request.request_method) && static_file?(request.path_info)
42
44
  request.path_info.gsub! %r{\.([^\./]+)$}, ''
43
45
  format $1 || options.default_content
44
46
 
45
47
  # For the oh so common case of actually wanting Javascript from an XmlHttpRequest
46
48
  format :js if request.xhr? && options.assume_xhr_is_js?
49
+
50
+ charset options.default_charset if TEXT_MIME_TYPES.include? format
47
51
  end
48
52
  end
49
53
 
@@ -89,18 +93,23 @@ module Sinatra
89
93
 
90
94
  app.error MissingTemplate do
91
95
  content_type :html, :charset => 'utf-8'
96
+ response.status = 500 # If I can find out how to reference the error code from the exception, I would
92
97
 
93
98
  engine = request.env['sinatra.error'].message[/\.([^\.]+)$/, 1]
99
+ engine = 'haml' unless ['haml', 'builder', 'erb'].include? engine
100
+
94
101
  path = request.path_info[/([^\/]+)$/, 1]
95
102
  path = "root" if path.nil? || path.empty?
96
-
103
+
104
+ format = engine == 'builder' ? 'xml' : 'html'
105
+
97
106
  layout = case engine
98
107
  when 'haml' then "!!!\n%html\n %body= yield"
99
108
  when 'erb' then "<html>\n <body>\n <%= yield %>\n </body>\n</html>"
100
109
  when 'builder' then "builder do |xml|\n xml << yield\nend"
101
110
  end
102
111
 
103
- layout = "<small>app.html.#{engine}</small>\n<pre>#{escape_html(layout)}</pre>" if layout
112
+ layout = "<small>app.#{format}.#{engine}</small>\n<pre>#{escape_html(layout)}</pre>"
104
113
 
105
114
  (<<-HTML).gsub(/^ {10}/, '')
106
115
  <!DOCTYPE html>
@@ -120,7 +129,7 @@ module Sinatra
120
129
  <div id="c">
121
130
  Try this:<br />
122
131
  #{layout if layout}
123
- <small>#{path}.html.#{engine}</small>
132
+ <small>#{path}.#{format}.#{engine}</small>
124
133
  <pre>Hello World!</pre>
125
134
  <small>application.rb</small>
126
135
  <pre>#{request.request_method.downcase} '#{request.path_info}' do\n respond_to do |wants|\n wants.#{engine == 'builder' ? 'xml' : 'html'} { #{engine} :#{path}#{",\n#{' '*32}layout => :app" if layout} }\n end\nend</pre>
@@ -135,7 +144,7 @@ module Sinatra
135
144
  app.class_eval do
136
145
  private
137
146
  def render_with_format(*args)
138
- args[1] = "#{args[1]}.#{format}".to_sym
147
+ args[1] = "#{args[1]}.#{format}".to_sym if args[1].is_a?(::Symbol)
139
148
  render_without_format *args
140
149
  rescue Errno::ENOENT
141
150
  raise MissingTemplate, "#{args[1]}.#{args[0]}"
@@ -154,23 +163,43 @@ module Sinatra
154
163
 
155
164
  module Helpers
156
165
  def format(val=nil)
157
- request.env['sinatra.respond_to.format'] = val.to_sym unless val.nil?
166
+ unless val.nil?
167
+ new_mime_type = media_type(val.to_sym)
168
+ fail "Unknown media type #{val}\nTry registering the extension with a mime type" if new_mime_type.nil?
169
+
170
+ request.env['sinatra.respond_to.format'] = val.to_sym
171
+ old_mime_type, params = response['Content-Type'].split(';', 2)
172
+ response['Content-Type'] = [new_mime_type, params].join(';')
173
+ end
174
+
158
175
  request.env['sinatra.respond_to.format']
159
176
  end
160
177
 
161
178
  def static_file?(path)
162
179
  return false unless path =~ /.*[^\/]$/
163
180
  public_dir = File.expand_path(options.public)
164
- path = File.expand_path(File.join(public_dir, unescape(request.path_info)))
181
+ path = File.expand_path(File.join(public_dir, unescape(path)))
165
182
  return false if path[0, public_dir.length] != public_dir
166
- return false unless File.file?(path)
167
- true
183
+ File.file?(path)
184
+ end
185
+
186
+ def charset(val=nil)
187
+ fail "Content-Type must be set in order to specify a charset" if response['Content-Type'].nil?
188
+
189
+ if response['Content-Type'] =~ /charset=[^ ;,]+/
190
+ response['Content-Type'].gsub!(/charset=[^ ;,]+/, (val == '' && '') || "charset=#{val}")
191
+ else
192
+ response['Content-Type'] += ";charset=#{val}"
193
+ end unless val.nil?
194
+
195
+ response['Content-Type'][/charset=([^ ;,]+)/, 1]
168
196
  end
169
197
 
170
198
  def respond_to(&block)
171
199
  wants = {}
172
200
  def wants.method_missing(type, *args, &block)
173
201
  Sinatra::Base.send(:fail, "Unknown media type for respond_to: #{type}\nTry registering the extension with a mime type") if Sinatra::Base.media_type(type).nil?
202
+ options = args.pop if args.last.is_a?(::Hash)
174
203
  self[type] = block
175
204
  end
176
205
 
@@ -178,12 +207,6 @@ module Sinatra
178
207
 
179
208
  handler = wants[format]
180
209
  raise UnhandledFormat if handler.nil?
181
-
182
- opts = [format]
183
- opts << {:charset => options.default_charset} if TEXT_MIME_TYPES.include? format && response['Content-Type'] !~ /charset=/
184
-
185
- content_type *opts
186
-
187
210
  handler.call
188
211
  end
189
212
  end
@@ -0,0 +1 @@
1
+ A static file
@@ -0,0 +1,53 @@
1
+ require 'sinatra/base'
2
+ require 'erb'
3
+ require 'haml'
4
+ require 'builder'
5
+
6
+ class TestApp < Sinatra::Base
7
+ register Sinatra::RespondTo
8
+
9
+ set :views, File.join(File.dirname(__FILE__), 'views')
10
+ set :public, File.join(File.dirname(__FILE__), 'public')
11
+
12
+ get '/resource' do
13
+ respond_to do |wants|
14
+ wants.html { haml :resource }
15
+ wants.json { "We got some json" }
16
+ wants.xml { builder :resource }
17
+ wants.js { erb :resource }
18
+ wants.png { }
19
+ end
20
+ end
21
+
22
+ get '/default_charset' do
23
+ respond_to do |wants|
24
+ wants.html { "Should set charcter set to default_charset" }
25
+ end
26
+ end
27
+
28
+ get '/iso-8859-1' do
29
+ respond_to do |wants|
30
+ wants.html { charset 'iso-8859-1'; "Should have character set of iso-8859-1" }
31
+ end
32
+ end
33
+
34
+ get '/normal-no-respond_to' do
35
+ "Just some plain old text"
36
+ end
37
+
38
+ get '/style.css' do
39
+ "This route should fail"
40
+ end
41
+
42
+ get '/style-no-extension', :provides => :css do
43
+ "Should succeed only when browser accepts text/css"
44
+ end
45
+
46
+ get '/missing-template' do
47
+ respond_to do |wants|
48
+ wants.html { haml :missing }
49
+ wants.xml { builder :missing }
50
+ wants.js { erb :missing }
51
+ end
52
+ end
53
+ end
@@ -0,0 +1 @@
1
+ Unreachable static file
@@ -0,0 +1,2 @@
1
+ %html
2
+ %body= yield
@@ -0,0 +1 @@
1
+ Hello from HTML
@@ -0,0 +1,3 @@
1
+ $(function () {
2
+ return '<%= "Hiya from javascript" %>'
3
+ });
@@ -0,0 +1,3 @@
1
+ builder do |xml|
2
+ xml.root "Some XML"
3
+ end
@@ -0,0 +1,340 @@
1
+ require File.join(File.dirname(__FILE__), 'spec_helper')
2
+
3
+ describe Sinatra::RespondTo do
4
+ describe "options" do
5
+ it "should initialize with :default_charset set to 'utf-8'" do
6
+ TestApp.default_charset.should == 'utf-8'
7
+ end
8
+
9
+ it "should initialize with :default_content set to :html" do
10
+ TestApp.default_content.should == :html
11
+ end
12
+
13
+ it "should initialize with :assume_xhr_is_js set to true" do
14
+ TestApp.assume_xhr_is_js be_true
15
+ end
16
+ end
17
+
18
+ describe "assume_xhr_is_js" do
19
+ it "should set the content type to application/javascript for an XMLHttpRequest" do
20
+ header 'HTTP_X_REQUESTED_WITH', 'XMLHttpRequest'
21
+
22
+ get '/resource'
23
+
24
+ last_response['Content-Type'].should =~ %r{#{Rack::Mime.mime_type(".js")}}
25
+ end
26
+
27
+ it "should not set the content type to application/javascript for an XMLHttpRequest when assume_xhr_is_js is false" do
28
+ TestApp.disable :assume_xhr_is_js
29
+ header 'HTTP_X_REQUESTED_WITH', 'XMLHttpRequest'
30
+ get '/resource'
31
+
32
+ last_response['Content-Type'].should_not =~ %r{#{Rack::Mime.mime_type(".js")}}
33
+
34
+ # Put back the option, no side effects here
35
+ TestApp.enable :assume_xhr_is_js
36
+ end
37
+ end
38
+
39
+ describe "extension routing" do
40
+ it "breaks routes expecting an extension" do
41
+ # In test_app.rb the route is defined as get '/style.css' instead of get '/style'
42
+ get "/style.css"
43
+
44
+ last_response.should_not be_ok
45
+ end
46
+
47
+ it "should pick the default content option for routes with out an extension, and render haml templates" do
48
+ get "/resource"
49
+
50
+ last_response.body.should =~ %r{\s*<html>\s*<body>Hello from HTML</body>\s*</html>\s*}
51
+ end
52
+
53
+ it "should render for a template using builder" do
54
+ get "/resource.xml"
55
+
56
+ last_response.body.should =~ %r{\s*<root>Some XML</root>\s*}
57
+ end
58
+
59
+ it "should render for a template using erb" do
60
+ get "/resource.js"
61
+
62
+ last_response.body.should =~ %r{'Hiya from javascript'}
63
+ end
64
+
65
+ it "should return string literals in block" do
66
+ get "/resource.json"
67
+
68
+ last_response.body.should =~ %r{We got some json}
69
+ end
70
+
71
+ # This will fail if the above is failing
72
+ it "should set the appropriate content-type for route with an extension" do
73
+ get "/resource.xml"
74
+
75
+ last_response['Content-Type'].should =~ %r{#{Rack::Mime.mime_type('.xml')}}
76
+ end
77
+
78
+ it "should set the character set to the default character set" do
79
+ get "/default_charset"
80
+
81
+ last_response['Content-Type'].should =~ %r{charset=#{TestApp.default_charset}}
82
+ end
83
+
84
+ it "should honor a change in character set in block" do
85
+ get "/iso-8859-1"
86
+
87
+ last_response['Content-Type'].should =~ %r{charset=iso-8859-1}
88
+ end
89
+
90
+ it "should not set the character set when requesting a non text resource" do
91
+ get "/resource.png"
92
+
93
+ last_response['Content-Type'].should_not =~ /charset/
94
+ end
95
+
96
+ it "should return not found when path does not exist" do
97
+ get "/nonexistant-path.txt"
98
+
99
+ last_response.status.should == 404
100
+ end
101
+
102
+ describe "for static files" do
103
+ before(:all) do
104
+ TestApp.enable :static
105
+ end
106
+
107
+ after(:all) do
108
+ TestApp.disable :static
109
+ end
110
+
111
+ it "should allow serving static files from public directory" do
112
+ get '/static.txt'
113
+
114
+ last_response.body.should == "A static file"
115
+ end
116
+
117
+ it "should only serve files when static routing is enabled" do
118
+ TestApp.disable :static
119
+ get '/static.txt'
120
+
121
+ last_response.should_not be_ok
122
+ last_response.body.should_not == "A static file"
123
+
124
+ TestApp.enable :static
125
+ end
126
+
127
+ it "should not allow serving static files from outside the public directory" do
128
+ get '/../unreachable_static.txt'
129
+
130
+ last_response.should_not be_ok
131
+ last_response.body.should_not == "Unreachable static file"
132
+ end
133
+ end
134
+ end
135
+
136
+ describe "routes not using respond_to" do
137
+ it "should set the default content type when no extension" do
138
+ get "/normal-no-respond_to"
139
+
140
+ last_response['Content-Type'].should =~ %r{#{Rack::Mime.mime_type(".#{TestApp.default_content}")}}
141
+ end
142
+
143
+ it "should set the default character when no extension" do
144
+ get "/normal-no-respond_to"
145
+
146
+ last_response['Content-Type'].should =~ %r{charset=#{TestApp.default_charset}}
147
+ end
148
+
149
+ it "should set the appropriate content type when given an extension" do
150
+ get "/normal-no-respond_to.css"
151
+
152
+ last_response['Content-Type'].should =~ %r{#{Rack::Mime.mime_type(".css")}}
153
+ end
154
+
155
+ it "should set the default charset when given an extension" do
156
+ get "/normal-no-respond_to.css"
157
+
158
+ last_response['Content-Type'].should =~ %r{#{Rack::Mime.mime_type(".css")}}
159
+ end
160
+ end
161
+
162
+ describe "error pages in development:" do
163
+ describe Sinatra::RespondTo::MissingTemplate do
164
+ it "should return 500 status when looking for a missing template" do
165
+ get '/missing-template'
166
+
167
+ last_response.status.should == 500
168
+ end
169
+
170
+ it "should return 500 status when looking for a missing template in production" do
171
+ TestApp.set :environment, :production
172
+ get '/missing-template'
173
+
174
+ last_response.status.should == 500
175
+
176
+ TestApp.set :environment, :development
177
+ end
178
+
179
+ it "should provide a helpful error message for a missing template when in development" do
180
+ get '/missing-template'
181
+
182
+ last_response.body.should =~ /missing\.html\.haml/
183
+ end
184
+
185
+ it "should show the /__sinatra__/500.png" do
186
+ get '/missing-template'
187
+
188
+ last_response.body.should =~ %r{src='/__sinatra__/500.png'}
189
+ end
190
+
191
+ it "should provide a contextual code example for the template engine" do
192
+ # Haml
193
+ get '/missing-template'
194
+
195
+ last_response.body.should =~ %r{app.html.haml}
196
+ last_response.body.should =~ %r{missing-template.html.haml}
197
+ last_response.body.should =~ %r{get '/missing-template' do respond_to do |wants| wants.html \{ haml :missing-template, layout => :app \} end end}
198
+
199
+ # ERB
200
+ get '/missing-template.js'
201
+
202
+ last_response.body.should =~ %r{app.html.erb}
203
+ last_response.body.should =~ %r{missing-template.html.erb}
204
+ last_response.body.should =~ %r{get '/missing-template' do respond_to do |wants| wants.html \{ erb :missing-template, layout => :app \} end end}
205
+
206
+ # Builder
207
+ get '/missing-template.xml'
208
+
209
+ last_response.body.should =~ %r{app.xml.builder}
210
+ last_response.body.should =~ %r{missing-template.xml.builder}
211
+ last_response.body.should =~ %r{get '/missing-template' do respond_to do |wants| wants.xml \{ builder :missing-template, layout => :app \} end end}
212
+ end
213
+ end
214
+
215
+ describe Sinatra::RespondTo::UnhandledFormat do
216
+ it "should return with a 404 when an extension is not supported" do
217
+ get '/missing-template.txt'
218
+
219
+ last_response.status.should == 404
220
+ end
221
+
222
+ it "should return with a 404 when an extension is not support in production" do
223
+ TestApp.set :environment, :production
224
+ get '/missing-template.txt'
225
+
226
+ last_response.status.should == 404
227
+
228
+ TestApp.set :environment, :development
229
+ end
230
+
231
+ it "should provide a helpful error message for an unhandled format" do
232
+ get '/missing-template.txt'
233
+
234
+ last_response.body.should =~ %r{get '/missing-template' do respond_to do |wants| wants.txt \{ "Hello World" \} end end}
235
+ end
236
+
237
+ it "should show the /__sinatra__/404.png" do
238
+ get '/missing-template.txt'
239
+
240
+ last_response.body.should =~ %r{src='/__sinatra__/404.png'}
241
+ end
242
+ end
243
+ end
244
+
245
+ describe "helpers:" do
246
+ include Sinatra::RespondTo::Helpers
247
+
248
+ before(:each) do
249
+ stub!(:response).and_return({'Content-Type' => 'text/html'})
250
+ end
251
+
252
+ describe "charset" do
253
+ it "should set the working charset when called with a non blank string" do
254
+ response['Content-Type'].should_not =~ /charset/
255
+
256
+ charset 'utf-8'
257
+
258
+ response['Content-Type'].split(';').should include("charset=utf-8")
259
+ end
260
+
261
+ it "should remove the charset when called with a blank string" do
262
+ charset 'utf-8'
263
+ charset ''
264
+
265
+ response['Content-Type'].should_not =~ /charset/
266
+ end
267
+
268
+ it "should return the current charset when called with nothing" do
269
+ charset 'utf-8'
270
+
271
+ charset.should == 'utf-8'
272
+ end
273
+
274
+ it "should fail when the response does not have a Content-Type" do
275
+ response.delete('Content-Type')
276
+
277
+ lambda { charset }.should raise_error
278
+ end
279
+ end
280
+
281
+ describe "format" do
282
+ before(:each) do
283
+ stub!(:request).and_return(Rack::Request.new({}))
284
+ end
285
+
286
+ def media_type(sym)
287
+ Sinatra::Base.media_type(sym)
288
+ end
289
+
290
+ it "should set the correct mime type when given an extension" do
291
+ format :xml
292
+
293
+ response['Content-Type'].split(';').should include(Rack::Mime.mime_type(".xml"))
294
+ end
295
+
296
+ it "should fail when set to an unknown extension type" do
297
+ lambda { format :bogus }.should raise_error
298
+ end
299
+
300
+ it "should return the current mime type extension" do
301
+ format :js
302
+
303
+ format.should == :js
304
+ end
305
+ end
306
+
307
+ describe "static_file?" do
308
+ before(:all) do
309
+ TestApp.enable :static
310
+ @static_folder = "/static folder/"
311
+ @reachable_static_file = "/static.txt"
312
+ @unreachable_static_file = "/../unreachable_static.txt"
313
+ end
314
+
315
+ after(:all) do
316
+ TestApp.disable :static
317
+ end
318
+
319
+ def options
320
+ TestApp
321
+ end
322
+
323
+ def unescape(path)
324
+ Rack::Utils.unescape(path)
325
+ end
326
+
327
+ it "should return true if the request path points to a file in the public directory" do
328
+ static_file?(@reachable_static_file).should be_true
329
+ end
330
+
331
+ it "should return false when pointing to files outside of the public directory" do
332
+ static_file?(@unreachable_static_file).should be_false
333
+ end
334
+
335
+ it "should return false when the path is for a folder" do
336
+ static_file?(@static_folder).should be_false
337
+ end
338
+ end
339
+ end
340
+ end
@@ -0,0 +1,18 @@
1
+ #$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
2
+
3
+ require 'rubygems'
4
+ require 'spec'
5
+ require 'rack/test'
6
+
7
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'sinatra', 'respond_to')
8
+ require File.join(File.dirname(__FILE__), 'app', 'test_app')
9
+
10
+ Spec::Runner.configure do |config|
11
+ def app
12
+ @app = Rack::Builder.new do
13
+ run TestApp
14
+ end
15
+ end
16
+
17
+ config.include Rack::Test::Methods
18
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cehoffman-sinatra-respond_to
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Hoffman
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-05-12 00:00:00 -07:00
12
+ date: 2009-05-13 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -37,6 +37,15 @@ files:
37
37
  - Rakefile
38
38
  - VERSION.yml
39
39
  - lib/sinatra/respond_to.rb
40
+ - spec/app/public/static.txt
41
+ - spec/app/test_app.rb
42
+ - spec/app/unreachable_static.txt
43
+ - spec/app/views/layout.html.haml
44
+ - spec/app/views/resource.html.haml
45
+ - spec/app/views/resource.js.erb
46
+ - spec/app/views/resource.xml.builder
47
+ - spec/extension_spec.rb
48
+ - spec/spec_helper.rb
40
49
  has_rdoc: true
41
50
  homepage: http://github.com/cehoffman/sinatra-respond_to
42
51
  post_install_message:
@@ -63,5 +72,7 @@ rubygems_version: 1.2.0
63
72
  signing_key:
64
73
  specification_version: 2
65
74
  summary: A respond_to style Rails block for baked-in web service support in Sinatra
66
- test_files: []
67
-
75
+ test_files:
76
+ - spec/app/test_app.rb
77
+ - spec/extension_spec.rb
78
+ - spec/spec_helper.rb