actionpack 2.0.1 → 2.0.2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of actionpack might be problematic. Click here for more details.

Files changed (40) hide show
  1. data/CHANGELOG +59 -26
  2. data/Rakefile +1 -1
  3. data/lib/action_controller/base.rb +6 -16
  4. data/lib/action_controller/benchmarking.rb +5 -4
  5. data/lib/action_controller/caching.rb +2 -2
  6. data/lib/action_controller/cgi_ext/cookie.rb +1 -5
  7. data/lib/action_controller/cookies.rb +3 -3
  8. data/lib/action_controller/dispatcher.rb +1 -1
  9. data/lib/action_controller/helpers.rb +2 -3
  10. data/lib/action_controller/integration.rb +29 -14
  11. data/lib/action_controller/layout.rb +2 -1
  12. data/lib/action_controller/request.rb +1 -1
  13. data/lib/action_controller/request_forgery_protection.rb +7 -1
  14. data/lib/action_controller/rescue.rb +1 -1
  15. data/lib/action_controller/routing.rb +12 -9
  16. data/lib/action_controller/session/cookie_store.rb +3 -0
  17. data/lib/action_pack/version.rb +1 -1
  18. data/lib/action_view.rb +6 -0
  19. data/lib/action_view/base.rb +83 -140
  20. data/lib/action_view/helpers/asset_tag_helper.rb +68 -46
  21. data/lib/action_view/helpers/text_helper.rb +2 -2
  22. data/lib/action_view/template_handler.rb +17 -0
  23. data/lib/action_view/template_handlers/builder.rb +19 -0
  24. data/lib/action_view/template_handlers/erb.rb +21 -0
  25. data/lib/action_view/template_handlers/rjs.rb +14 -0
  26. data/test/action_view_test.rb +18 -0
  27. data/test/controller/cgi_test.rb +4 -4
  28. data/test/controller/cookie_test.rb +1 -1
  29. data/test/controller/filters_test.rb +1 -0
  30. data/test/controller/helper_test.rb +8 -6
  31. data/test/controller/integration_test.rb +41 -11
  32. data/test/controller/new_render_test.rb +2 -2
  33. data/test/controller/render_test.rb +31 -10
  34. data/test/controller/request_test.rb +2 -1
  35. data/test/controller/routing_test.rb +9 -3
  36. data/test/fixtures/test/{hello_world.builder → hello_world_from_rxml.builder} +0 -0
  37. data/test/template/asset_tag_helper_test.rb +45 -12
  38. data/test/template/compiled_templates_test.rb +14 -12
  39. data/test/template/erb_util_test.rb +56 -0
  40. metadata +56 -43
@@ -9,6 +9,7 @@ module Fun
9
9
  end
10
10
 
11
11
 
12
+ # FIXME: crashes Ruby 1.9
12
13
  class TestController < ActionController::Base
13
14
  layout :determine_layout
14
15
 
@@ -44,6 +45,10 @@ class TestController < ActionController::Base
44
45
  render :json => {:hello => 'world'}.to_json, :callback => 'alert'
45
46
  end
46
47
 
48
+ def render_json_with_custom_content_type
49
+ render :json => {:hello => 'world'}.to_json, :content_type => 'text/javascript'
50
+ end
51
+
47
52
  def render_symbol_json
48
53
  render :json => {:hello => 'world'}.to_json
49
54
  end
@@ -65,6 +70,10 @@ class TestController < ActionController::Base
65
70
  render :template => "test/hello"
66
71
  end
67
72
 
73
+ def render_xml_with_custom_content_type
74
+ render :xml => "<blah/>", :content_type => "application/atomsvc+xml"
75
+ end
76
+
68
77
  def heading
69
78
  head :ok
70
79
  end
@@ -199,56 +208,62 @@ class RenderTest < Test::Unit::TestCase
199
208
  assert_template "test/hello_world"
200
209
  end
201
210
 
202
- def test_do_with_render
211
+ def test_render
203
212
  get :render_hello_world
204
213
  assert_template "test/hello_world"
205
214
  end
206
215
 
207
- def test_do_with_render_from_variable
216
+ def test_render_from_variable
208
217
  get :render_hello_world_from_variable
209
218
  assert_equal "hello david", @response.body
210
219
  end
211
220
 
212
- def test_do_with_render_action
221
+ def test_render_action
213
222
  get :render_action_hello_world
214
223
  assert_template "test/hello_world"
215
224
  end
216
225
 
217
- def test_do_with_render_action_with_symbol
226
+ def test_render_action_with_symbol
218
227
  get :render_action_hello_world_with_symbol
219
228
  assert_template "test/hello_world"
220
229
  end
221
230
 
222
- def test_do_with_render_text
231
+ def test_render_text
223
232
  get :render_text_hello_world
224
233
  assert_equal "hello world", @response.body
225
234
  end
226
235
 
227
- def test_do_with_render_json
236
+ def test_render_json
228
237
  get :render_json_hello_world
229
238
  assert_equal '{"hello": "world"}', @response.body
230
239
  assert_equal 'application/json', @response.content_type
231
240
  end
232
241
 
233
- def test_do_with_render_json_with_callback
242
+ def test_render_json_with_callback
234
243
  get :render_json_hello_world_with_callback
235
244
  assert_equal 'alert({"hello": "world"})', @response.body
236
245
  assert_equal 'application/json', @response.content_type
237
246
  end
238
247
 
239
- def test_do_with_render_symbol_json
248
+ def test_render_json_with_custom_content_type
249
+ get :render_json_with_custom_content_type
250
+ assert_equal '{"hello": "world"}', @response.body
251
+ assert_equal 'text/javascript', @response.content_type
252
+ end
253
+
254
+ def test_render_symbol_json
240
255
  get :render_symbol_json
241
256
  assert_equal '{"hello": "world"}', @response.body
242
257
  assert_equal 'application/json', @response.content_type
243
258
  end
244
259
 
245
- def test_do_with_render_custom_code
260
+ def test_render_custom_code
246
261
  get :render_custom_code
247
262
  assert_response 404
248
263
  assert_equal 'hello world', @response.body
249
264
  end
250
265
 
251
- def test_do_with_render_nothing_with_appendix
266
+ def test_render_nothing_with_appendix
252
267
  get :render_nothing_with_appendix
253
268
  assert_response 200
254
269
  assert_equal 'appended', @response.body
@@ -269,6 +284,7 @@ class RenderTest < Test::Unit::TestCase
269
284
  def test_render_xml
270
285
  get :render_xml_hello
271
286
  assert_equal "<html>\n <p>Hello David</p>\n<p>This is grand!</p>\n</html>\n", @response.body
287
+ assert_equal "application/xml", @response.content_type
272
288
  end
273
289
 
274
290
  def test_render_xml_with_default
@@ -435,6 +451,11 @@ class RenderTest < Test::Unit::TestCase
435
451
  assert_equal %(Element.replace("foo", "partial html");), @response.body
436
452
  end
437
453
 
454
+ def test_should_render_xml_but_keep_custom_content_type
455
+ get :render_xml_with_custom_content_type
456
+ assert_equal "application/atomsvc+xml", @response.content_type
457
+ end
458
+
438
459
  protected
439
460
 
440
461
  def etag_for(text)
@@ -1,4 +1,5 @@
1
1
  require File.dirname(__FILE__) + '/../abstract_unit'
2
+ require 'action_controller/integration'
2
3
 
3
4
  class RequestTest < Test::Unit::TestCase
4
5
  def setup
@@ -315,7 +316,7 @@ class RequestTest < Test::Unit::TestCase
315
316
 
316
317
  def test_allow_method_hacking_on_post
317
318
  set_request_method_to :post
318
- [:get, :head, :put, :post, :delete].each do |method|
319
+ [:get, :head, :options, :put, :post, :delete].each do |method|
319
320
  @request.instance_eval { @parameters = { :_method => method } ; @request_method = nil }
320
321
  assert_equal(method == :head ? :get : method, @request.method)
321
322
  end
@@ -2,6 +2,12 @@ require "#{File.dirname(__FILE__)}/../abstract_unit"
2
2
  require "#{File.dirname(__FILE__)}/fake_controllers"
3
3
  require 'action_controller/routing'
4
4
 
5
+ class MilestonesController < ActionController::Base
6
+ def index() head :ok end
7
+ alias_method :show, :index
8
+ def rescue_action(e) raise e end
9
+ end
10
+
5
11
  RunTimeTests = ARGV.include? 'time'
6
12
  ROUTING = ActionController::Routing
7
13
 
@@ -2023,14 +2029,14 @@ class RouteSetTest < Test::Unit::TestCase
2023
2029
  def test_named_route_in_nested_resource
2024
2030
  set.draw do |map|
2025
2031
  map.resources :projects do |project|
2026
- project.comments 'comments', :controller => 'comments', :action => 'index'
2032
+ project.milestones 'milestones', :controller => 'milestones', :action => 'index'
2027
2033
  end
2028
2034
  end
2029
2035
 
2030
- request.path = "/projects/1/comments"
2036
+ request.path = "/projects/1/milestones"
2031
2037
  request.method = :get
2032
2038
  assert_nothing_raised { set.recognize(request) }
2033
- assert_equal("comments", request.path_parameters[:controller])
2039
+ assert_equal("milestones", request.path_parameters[:controller])
2034
2040
  assert_equal("index", request.path_parameters[:action])
2035
2041
  end
2036
2042
 
@@ -223,7 +223,6 @@ class AssetTagHelperTest < Test::Unit::TestCase
223
223
  assert_equal copy, source
224
224
  end
225
225
 
226
-
227
226
  def test_caching_javascript_include_tag_when_caching_on
228
227
  ENV["RAILS_ASSET_ID"] = ""
229
228
  ActionController::Base.asset_host = 'http://a%d.example.com'
@@ -234,20 +233,37 @@ class AssetTagHelperTest < Test::Unit::TestCase
234
233
  javascript_include_tag(:all, :cache => true)
235
234
  )
236
235
 
237
- assert File.exists?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
236
+ assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
238
237
 
239
238
  assert_dom_equal(
240
239
  %(<script src="http://a2.example.com/javascripts/money.js" type="text/javascript"></script>),
241
240
  javascript_include_tag(:all, :cache => "money")
242
241
  )
243
242
 
244
- assert File.exists?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
243
+ assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
245
244
 
246
245
  ensure
247
246
  File.delete(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
248
247
  File.delete(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
249
248
  end
250
-
249
+
250
+ def test_caching_javascript_include_tag_when_caching_on_with_proc_asset_host
251
+ ENV["RAILS_ASSET_ID"] = ""
252
+ ActionController::Base.asset_host = Proc.new { |source| "http://a#{source.length}.example.com" }
253
+ ActionController::Base.perform_caching = true
254
+
255
+ assert_equal '/javascripts/scripts.js'.length, 23
256
+ assert_dom_equal(
257
+ %(<script src="http://a23.example.com/javascripts/scripts.js" type="text/javascript"></script>),
258
+ javascript_include_tag(:all, :cache => 'scripts')
259
+ )
260
+
261
+ assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'scripts.js'))
262
+
263
+ ensure
264
+ File.delete(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'scripts.js'))
265
+ end
266
+
251
267
  def test_caching_javascript_include_tag_when_caching_on_and_using_subdirectory
252
268
  ENV["RAILS_ASSET_ID"] = ""
253
269
  ActionController::Base.asset_host = 'http://a%d.example.com'
@@ -258,7 +274,7 @@ class AssetTagHelperTest < Test::Unit::TestCase
258
274
  javascript_include_tag(:all, :cache => "cache/money")
259
275
  )
260
276
 
261
- assert File.exists?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'cache', 'money.js'))
277
+ assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'cache', 'money.js'))
262
278
  ensure
263
279
  File.delete(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'cache', 'money.js'))
264
280
  end
@@ -272,14 +288,14 @@ class AssetTagHelperTest < Test::Unit::TestCase
272
288
  javascript_include_tag(:all, :cache => true)
273
289
  )
274
290
 
275
- assert !File.exists?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
291
+ assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
276
292
 
277
293
  assert_dom_equal(
278
294
  %(<script src="/javascripts/application.js" type="text/javascript"></script>\n<script src="/javascripts/bank.js" type="text/javascript"></script>\n<script src="/javascripts/robber.js" type="text/javascript"></script>),
279
295
  javascript_include_tag(:all, :cache => "money")
280
296
  )
281
297
 
282
- assert !File.exists?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
298
+ assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
283
299
  end
284
300
 
285
301
  def test_caching_stylesheet_link_tag_when_caching_on
@@ -292,19 +308,36 @@ class AssetTagHelperTest < Test::Unit::TestCase
292
308
  stylesheet_link_tag(:all, :cache => true)
293
309
  )
294
310
 
295
- assert File.exists?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
311
+ assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
296
312
 
297
313
  assert_dom_equal(
298
314
  %(<link href="http://a3.example.com/stylesheets/money.css" media="screen" rel="stylesheet" type="text/css" />),
299
315
  stylesheet_link_tag(:all, :cache => "money")
300
316
  )
301
317
 
302
- assert File.exists?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
318
+ assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
303
319
  ensure
304
320
  File.delete(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
305
321
  File.delete(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
306
322
  end
307
-
323
+
324
+ def test_caching_stylesheet_link_tag_when_caching_on_with_proc_asset_host
325
+ ENV["RAILS_ASSET_ID"] = ""
326
+ ActionController::Base.asset_host = Proc.new { |source| "http://a#{source.length}.example.com" }
327
+ ActionController::Base.perform_caching = true
328
+
329
+ assert_equal '/stylesheets/styles.css'.length, 23
330
+ assert_dom_equal(
331
+ %(<link href="http://a23.example.com/stylesheets/styles.css" media="screen" rel="stylesheet" type="text/css" />),
332
+ stylesheet_link_tag(:all, :cache => 'styles')
333
+ )
334
+
335
+ assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'styles.css'))
336
+
337
+ ensure
338
+ File.delete(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'styles.css'))
339
+ end
340
+
308
341
  def test_caching_stylesheet_include_tag_when_caching_off
309
342
  ENV["RAILS_ASSET_ID"] = ""
310
343
  ActionController::Base.perform_caching = false
@@ -314,14 +347,14 @@ class AssetTagHelperTest < Test::Unit::TestCase
314
347
  stylesheet_link_tag(:all, :cache => true)
315
348
  )
316
349
 
317
- assert !File.exists?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
350
+ assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
318
351
 
319
352
  assert_dom_equal(
320
353
  %(<link href="/stylesheets/bank.css" media="screen" rel="stylesheet" type="text/css" />\n<link href="/stylesheets/robber.css" media="screen" rel="stylesheet" type="text/css" />),
321
354
  stylesheet_link_tag(:all, :cache => "money")
322
355
  )
323
356
 
324
- assert !File.exists?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
357
+ assert !File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
325
358
  end
326
359
  end
327
360
 
@@ -95,11 +95,13 @@ class CompiledTemplateTests < Test::Unit::TestCase
95
95
  assert v.send(:compile_template?, nil, @b, {})
96
96
  assert v.send(:compile_template?, nil, @s, {}) unless windows
97
97
 
98
+ @handler = ActionView::Base.handler_for_extension(:rhtml)
99
+
98
100
  # All templates are rendered at t+2
99
101
  Time.expects(:now).times(windows ? 2 : 3).returns(t + 2.seconds)
100
- v.compile_and_render_template(:rhtml, '', @a)
101
- v.compile_and_render_template(:rhtml, '', @b)
102
- v.compile_and_render_template(:rhtml, '', @s) unless windows
102
+ v.send(:compile_and_render_template, @handler, '', @a)
103
+ v.send(:compile_and_render_template, @handler, '', @b)
104
+ v.send(:compile_and_render_template, @handler, '', @s) unless windows
103
105
  a_n = v.method_names[@a]
104
106
  b_n = v.method_names[@b]
105
107
  s_n = v.method_names[@s] unless windows
@@ -117,9 +119,9 @@ class CompiledTemplateTests < Test::Unit::TestCase
117
119
  assert !v.send(:compile_template?, nil, @a, {})
118
120
  assert !v.send(:compile_template?, nil, @b, {})
119
121
  assert !v.send(:compile_template?, nil, @s, {}) unless windows
120
- v.compile_and_render_template(:rhtml, '', @a)
121
- v.compile_and_render_template(:rhtml, '', @b)
122
- v.compile_and_render_template(:rhtml, '', @s) unless windows
122
+ v.send(:compile_and_render_template, @handler, '', @a)
123
+ v.send(:compile_and_render_template, @handler, '', @b)
124
+ v.send(:compile_and_render_template, @handler, '', @s) unless windows
123
125
  # none of the files have changed since last compile
124
126
  assert v.compile_time[a_n] < t + 3.seconds
125
127
  assert v.compile_time[b_n] < t + 3.seconds
@@ -142,9 +144,9 @@ class CompiledTemplateTests < Test::Unit::TestCase
142
144
 
143
145
  # Only the symlink template gets rendered at t+3
144
146
  Time.stubs(:now).returns(t + 3.seconds) unless windows
145
- v.compile_and_render_template(:rhtml, '', @a)
146
- v.compile_and_render_template(:rhtml, '', @b)
147
- v.compile_and_render_template(:rhtml, '', @s) unless windows
147
+ v.send(:compile_and_render_template, @handler, '', @a)
148
+ v.send(:compile_and_render_template, @handler, '', @b)
149
+ v.send(:compile_and_render_template, @handler, '', @s) unless windows
148
150
  # the symlink has changed since last compile
149
151
  assert v.compile_time[a_n] < t + 3.seconds
150
152
  assert v.compile_time[b_n] < t + 3.seconds
@@ -167,9 +169,9 @@ class CompiledTemplateTests < Test::Unit::TestCase
167
169
  assert v.send(:compile_template?, nil, @s, {}) unless windows
168
170
 
169
171
  Time.expects(:now).times(windows ? 1 : 2).returns(t + 5.seconds)
170
- v.compile_and_render_template(:rhtml, '', @a)
171
- v.compile_and_render_template(:rhtml, '', @b)
172
- v.compile_and_render_template(:rhtml, '', @s) unless windows
172
+ v.send(:compile_and_render_template, @handler, '', @a)
173
+ v.send(:compile_and_render_template, @handler, '', @b)
174
+ v.send(:compile_and_render_template, @handler, '', @s) unless windows
173
175
  # the file at the end of the symlink has changed since last compile
174
176
  # both the symlink and the file at the end of it should be recompiled
175
177
  assert v.compile_time[a_n] < t + 5.seconds
@@ -0,0 +1,56 @@
1
+ require "#{File.dirname(__FILE__)}/../abstract_unit"
2
+
3
+ class ErbUtilTest < Test::Unit::TestCase
4
+ include ERB::Util
5
+
6
+ def test_amp
7
+ assert_equal '&amp;', html_escape('&')
8
+ end
9
+
10
+ def test_quot
11
+ assert_equal '&quot;', html_escape('"')
12
+ end
13
+
14
+ def test_lt
15
+ assert_equal '&lt;', html_escape('<')
16
+ end
17
+
18
+ def test_gt
19
+ assert_equal '&gt;', html_escape('>')
20
+ end
21
+
22
+ def test_rest_in_ascii
23
+ (0..127).to_a.map(&:chr).each do |chr|
24
+ next if %w(& " < >).include?(chr)
25
+ assert_equal chr, html_escape(chr)
26
+ end
27
+ end
28
+ end
29
+ require "#{File.dirname(__FILE__)}/../abstract_unit"
30
+
31
+ class ErbUtilTest < Test::Unit::TestCase
32
+ include ERB::Util
33
+
34
+ def test_amp
35
+ assert_equal '&amp;', html_escape('&')
36
+ end
37
+
38
+ def test_quot
39
+ assert_equal '&quot;', html_escape('"')
40
+ end
41
+
42
+ def test_lt
43
+ assert_equal '&lt;', html_escape('<')
44
+ end
45
+
46
+ def test_gt
47
+ assert_equal '&gt;', html_escape('>')
48
+ end
49
+
50
+ def test_rest_in_ascii
51
+ (0..127).to_a.map(&:chr).each do |chr|
52
+ next if %w(& " < >).include?(chr)
53
+ assert_equal chr, html_escape(chr)
54
+ end
55
+ end
56
+ end
metadata CHANGED
@@ -1,33 +1,34 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.4
3
- specification_version: 1
4
2
  name: actionpack
5
3
  version: !ruby/object:Gem::Version
6
- version: 2.0.1
7
- date: 2007-12-07 00:00:00 -06:00
8
- summary: Web-flow and rendering framework putting the VC in MVC.
9
- require_paths:
10
- - lib
11
- email: david@loudthinking.com
12
- homepage: http://www.rubyonrails.org
13
- rubyforge_project: actionpack
14
- description: Eases web-request routing, handling, and response as a half-way front, half-way page controller. Implemented with specific emphasis on enabling easy unit/integration testing that doesn't require a browser.
15
- autorequire: action_controller
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: 0.0.0
24
- version:
4
+ version: 2.0.2
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - David Heinemeier Hansson
8
+ autorequire: action_controller
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2007-12-16 00:00:00 -06:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activesupport
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - "="
21
+ - !ruby/object:Gem::Version
22
+ version: 2.0.2
23
+ version:
24
+ description: Eases web-request routing, handling, and response as a half-way front, half-way page controller. Implemented with specific emphasis on enabling easy unit/integration testing that doesn't require a browser.
25
+ email: david@loudthinking.com
26
+ executables: []
27
+
28
+ extensions: []
29
+
30
+ extra_rdoc_files: []
31
+
31
32
  files:
32
33
  - Rakefile
33
34
  - install.rb
@@ -144,6 +145,11 @@ files:
144
145
  - lib/action_view/helpers/url_helper.rb
145
146
  - lib/action_view/partials.rb
146
147
  - lib/action_view/template_error.rb
148
+ - lib/action_view/template_handler.rb
149
+ - lib/action_view/template_handlers
150
+ - lib/action_view/template_handlers/builder.rb
151
+ - lib/action_view/template_handlers/erb.rb
152
+ - lib/action_view/template_handlers/rjs.rb
147
153
  - lib/action_view.rb
148
154
  - lib/actionpack.rb
149
155
  - test/abstract_unit.rb
@@ -352,9 +358,9 @@ files:
352
358
  - test/fixtures/test/formatted_xml_erb.xml.erb
353
359
  - test/fixtures/test/greeting.erb
354
360
  - test/fixtures/test/hello.builder
355
- - test/fixtures/test/hello_world.builder
356
361
  - test/fixtures/test/hello_world.erb
357
362
  - test/fixtures/test/hello_world_container.builder
363
+ - test/fixtures/test/hello_world_from_rxml.builder
358
364
  - test/fixtures/test/hello_world_with_layout_false.erb
359
365
  - test/fixtures/test/hello_xml_world.builder
360
366
  - test/fixtures/test/list.erb
@@ -374,6 +380,7 @@ files:
374
380
  - test/template/benchmark_helper_test.rb
375
381
  - test/template/compiled_templates_test.rb
376
382
  - test/template/date_helper_test.rb
383
+ - test/template/erb_util_test.rb
377
384
  - test/template/form_helper_test.rb
378
385
  - test/template/form_options_helper_test.rb
379
386
  - test/template/form_tag_helper_test.rb
@@ -386,25 +393,31 @@ files:
386
393
  - test/template/text_helper_test.rb
387
394
  - test/template/url_helper_test.rb
388
395
  - test/testing_sandbox.rb
389
- test_files: []
390
-
396
+ has_rdoc: true
397
+ homepage: http://www.rubyonrails.org
398
+ post_install_message:
391
399
  rdoc_options: []
392
400
 
393
- extra_rdoc_files: []
394
-
395
- executables: []
396
-
397
- extensions: []
398
-
401
+ require_paths:
402
+ - lib
403
+ required_ruby_version: !ruby/object:Gem::Requirement
404
+ requirements:
405
+ - - ">="
406
+ - !ruby/object:Gem::Version
407
+ version: "0"
408
+ version:
409
+ required_rubygems_version: !ruby/object:Gem::Requirement
410
+ requirements:
411
+ - - ">="
412
+ - !ruby/object:Gem::Version
413
+ version: "0"
414
+ version:
399
415
  requirements:
400
416
  - none
401
- dependencies:
402
- - !ruby/object:Gem::Dependency
403
- name: activesupport
404
- version_requirement:
405
- version_requirements: !ruby/object:Gem::Version::Requirement
406
- requirements:
407
- - - "="
408
- - !ruby/object:Gem::Version
409
- version: 2.0.1
410
- version:
417
+ rubyforge_project: actionpack
418
+ rubygems_version: 0.9.5
419
+ signing_key:
420
+ specification_version: 2
421
+ summary: Web-flow and rendering framework putting the VC in MVC.
422
+ test_files: []
423
+