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.
- data/CHANGELOG +59 -26
- data/Rakefile +1 -1
- data/lib/action_controller/base.rb +6 -16
- data/lib/action_controller/benchmarking.rb +5 -4
- data/lib/action_controller/caching.rb +2 -2
- data/lib/action_controller/cgi_ext/cookie.rb +1 -5
- data/lib/action_controller/cookies.rb +3 -3
- data/lib/action_controller/dispatcher.rb +1 -1
- data/lib/action_controller/helpers.rb +2 -3
- data/lib/action_controller/integration.rb +29 -14
- data/lib/action_controller/layout.rb +2 -1
- data/lib/action_controller/request.rb +1 -1
- data/lib/action_controller/request_forgery_protection.rb +7 -1
- data/lib/action_controller/rescue.rb +1 -1
- data/lib/action_controller/routing.rb +12 -9
- data/lib/action_controller/session/cookie_store.rb +3 -0
- data/lib/action_pack/version.rb +1 -1
- data/lib/action_view.rb +6 -0
- data/lib/action_view/base.rb +83 -140
- data/lib/action_view/helpers/asset_tag_helper.rb +68 -46
- data/lib/action_view/helpers/text_helper.rb +2 -2
- data/lib/action_view/template_handler.rb +17 -0
- data/lib/action_view/template_handlers/builder.rb +19 -0
- data/lib/action_view/template_handlers/erb.rb +21 -0
- data/lib/action_view/template_handlers/rjs.rb +14 -0
- data/test/action_view_test.rb +18 -0
- data/test/controller/cgi_test.rb +4 -4
- data/test/controller/cookie_test.rb +1 -1
- data/test/controller/filters_test.rb +1 -0
- data/test/controller/helper_test.rb +8 -6
- data/test/controller/integration_test.rb +41 -11
- data/test/controller/new_render_test.rb +2 -2
- data/test/controller/render_test.rb +31 -10
- data/test/controller/request_test.rb +2 -1
- data/test/controller/routing_test.rb +9 -3
- data/test/fixtures/test/{hello_world.builder → hello_world_from_rxml.builder} +0 -0
- data/test/template/asset_tag_helper_test.rb +45 -12
- data/test/template/compiled_templates_test.rb +14 -12
- data/test/template/erb_util_test.rb +56 -0
- 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
|
211
|
+
def test_render
|
203
212
|
get :render_hello_world
|
204
213
|
assert_template "test/hello_world"
|
205
214
|
end
|
206
215
|
|
207
|
-
def
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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.
|
2032
|
+
project.milestones 'milestones', :controller => 'milestones', :action => 'index'
|
2027
2033
|
end
|
2028
2034
|
end
|
2029
2035
|
|
2030
|
-
request.path = "/projects/1/
|
2036
|
+
request.path = "/projects/1/milestones"
|
2031
2037
|
request.method = :get
|
2032
2038
|
assert_nothing_raised { set.recognize(request) }
|
2033
|
-
assert_equal("
|
2039
|
+
assert_equal("milestones", request.path_parameters[:controller])
|
2034
2040
|
assert_equal("index", request.path_parameters[:action])
|
2035
2041
|
end
|
2036
2042
|
|
File without changes
|
@@ -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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
101
|
-
v.
|
102
|
-
v.
|
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.
|
121
|
-
v.
|
122
|
-
v.
|
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.
|
146
|
-
v.
|
147
|
-
v.
|
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.
|
171
|
-
v.
|
172
|
-
v.
|
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 '&', html_escape('&')
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_quot
|
11
|
+
assert_equal '"', html_escape('"')
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_lt
|
15
|
+
assert_equal '<', html_escape('<')
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_gt
|
19
|
+
assert_equal '>', 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 '&', html_escape('&')
|
36
|
+
end
|
37
|
+
|
38
|
+
def test_quot
|
39
|
+
assert_equal '"', html_escape('"')
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_lt
|
43
|
+
assert_equal '<', html_escape('<')
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_gt
|
47
|
+
assert_equal '>', 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.
|
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
|
-
|
390
|
-
|
396
|
+
has_rdoc: true
|
397
|
+
homepage: http://www.rubyonrails.org
|
398
|
+
post_install_message:
|
391
399
|
rdoc_options: []
|
392
400
|
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
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
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
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
|
+
|