actionpack 3.1.0.beta1 → 3.1.0.rc1

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 (52) hide show
  1. data/CHANGELOG +57 -4
  2. data/README.rdoc +5 -5
  3. data/lib/abstract_controller/base.rb +25 -13
  4. data/lib/abstract_controller/callbacks.rb +2 -2
  5. data/lib/abstract_controller/layouts.rb +3 -3
  6. data/lib/abstract_controller/rendering.rb +22 -6
  7. data/lib/abstract_controller/url_for.rb +6 -0
  8. data/lib/abstract_controller/view_paths.rb +1 -1
  9. data/lib/action_controller/log_subscriber.rb +3 -1
  10. data/lib/action_controller/metal/compatibility.rb +4 -7
  11. data/lib/action_controller/metal/implicit_render.rb +7 -9
  12. data/lib/action_controller/metal/instrumentation.rb +1 -1
  13. data/lib/action_controller/metal/params_wrapper.rb +37 -26
  14. data/lib/action_controller/metal/request_forgery_protection.rb +4 -1
  15. data/lib/action_controller/metal/responder.rb +6 -1
  16. data/lib/action_controller/metal/url_for.rb +21 -0
  17. data/lib/action_controller/test_case.rb +6 -1
  18. data/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +1 -1
  19. data/lib/action_dispatch/http/cache.rb +12 -14
  20. data/lib/action_dispatch/http/rack_cache.rb +6 -2
  21. data/lib/action_dispatch/http/response.rb +41 -15
  22. data/lib/action_dispatch/http/url.rb +1 -1
  23. data/lib/action_dispatch/middleware/cookies.rb +3 -3
  24. data/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb +1 -1
  25. data/lib/action_dispatch/routing.rb +3 -3
  26. data/lib/action_dispatch/routing/mapper.rb +33 -28
  27. data/lib/action_dispatch/routing/route_set.rb +6 -3
  28. data/lib/action_dispatch/routing/url_for.rb +4 -4
  29. data/lib/action_dispatch/testing/assertions/selector.rb +1 -1
  30. data/lib/action_dispatch/testing/performance_test.rb +6 -13
  31. data/lib/action_dispatch/testing/test_process.rb +1 -1
  32. data/lib/action_pack/version.rb +1 -1
  33. data/lib/action_view.rb +1 -0
  34. data/lib/action_view/base.rb +5 -5
  35. data/lib/action_view/helpers/asset_paths.rb +0 -1
  36. data/lib/action_view/helpers/atom_feed_helper.rb +6 -6
  37. data/lib/action_view/helpers/cache_helper.rb +1 -1
  38. data/lib/action_view/helpers/capture_helper.rb +6 -2
  39. data/lib/action_view/helpers/date_helper.rb +119 -75
  40. data/lib/action_view/helpers/form_helper.rb +26 -36
  41. data/lib/action_view/helpers/form_options_helper.rb +2 -2
  42. data/lib/action_view/helpers/form_tag_helper.rb +6 -6
  43. data/lib/action_view/helpers/translation_helper.rb +4 -4
  44. data/lib/action_view/helpers/url_helper.rb +1 -1
  45. data/lib/action_view/lookup_context.rb +5 -5
  46. data/lib/action_view/path_set.rb +1 -1
  47. data/lib/action_view/template.rb +5 -5
  48. data/lib/action_view/template/error.rb +2 -0
  49. data/lib/action_view/template/handlers/erb.rb +0 -1
  50. data/lib/action_view/template/resolver.rb +37 -25
  51. data/lib/sprockets/railtie.rb +3 -3
  52. metadata +8 -8
@@ -243,7 +243,7 @@ module ActionView
243
243
  #
244
244
  # === Setting the method
245
245
  #
246
- # You can force the form to use the full array of HTTP verbs by setting
246
+ # You can force the form to use the full array of HTTP verbs by setting
247
247
  #
248
248
  # :method => (:get|:post|:put|:delete)
249
249
  #
@@ -584,8 +584,8 @@ module ActionView
584
584
  # <% end %>
585
585
  # ...
586
586
  # <% end %>
587
- def fields_for(record, record_object = nil, options = {}, &block)
588
- builder = instantiate_builder(record, record_object, options, &block)
587
+ def fields_for(record_name, record_object = nil, options = {}, &block)
588
+ builder = instantiate_builder(record_name, record_object, options, &block)
589
589
  output = capture(builder, &block)
590
590
  output.concat builder.hidden_field(:id) if output && options[:hidden_field_id] && !builder.emitted_hidden_id?
591
591
  output
@@ -898,16 +898,13 @@ module ActionView
898
898
 
899
899
  private
900
900
 
901
- def instantiate_builder(record, *args, &block)
902
- options = args.extract_options!
903
- record_object = args.shift
904
-
905
- case record
901
+ def instantiate_builder(record_name, record_object, options, &block)
902
+ case record_name
906
903
  when String, Symbol
907
904
  object = record_object
908
- object_name = record
905
+ object_name = record_name
909
906
  else
910
- object = record
907
+ object = record_name
911
908
  object_name = ActiveModel::Naming.param_key(object)
912
909
  end
913
910
 
@@ -1219,35 +1216,30 @@ module ActionView
1219
1216
  RUBY_EVAL
1220
1217
  end
1221
1218
 
1222
- def fields_for(record_or_name_or_array, *args, &block)
1223
- if options.has_key?(:index)
1224
- index = "[#{options[:index]}]"
1225
- elsif defined?(@auto_index)
1226
- self.object_name = @object_name.to_s.sub(/\[\]$/,"")
1227
- index = "[#{@auto_index}]"
1228
- else
1229
- index = ""
1230
- end
1231
-
1232
- args << {} unless args.last.is_a?(Hash)
1233
- args.last[:builder] ||= options[:builder]
1234
- args.last[:parent_builder] = self
1219
+ def fields_for(record_name, record_object = nil, fields_options = {}, &block)
1220
+ fields_options, record_object = record_object, nil if record_object.is_a?(Hash)
1221
+ fields_options[:builder] ||= options[:builder]
1222
+ fields_options[:parent_builder] = self
1235
1223
 
1236
- case record_or_name_or_array
1224
+ case record_name
1237
1225
  when String, Symbol
1238
- if nested_attributes_association?(record_or_name_or_array)
1239
- return fields_for_with_nested_attributes(record_or_name_or_array, args, block)
1240
- else
1241
- name = record_or_name_or_array
1226
+ if nested_attributes_association?(record_name)
1227
+ return fields_for_with_nested_attributes(record_name, record_object, fields_options, block)
1242
1228
  end
1243
1229
  else
1244
- object = record_or_name_or_array.is_a?(Array) ? record_or_name_or_array.last : record_or_name_or_array
1245
- name = ActiveModel::Naming.param_key(object)
1246
- args.unshift(object)
1230
+ record_object = record_name.is_a?(Array) ? record_name.last : record_name
1231
+ record_name = ActiveModel::Naming.param_key(record_object)
1232
+ end
1233
+
1234
+ index = if options.has_key?(:index)
1235
+ "[#{options[:index]}]"
1236
+ elsif defined?(@auto_index)
1237
+ self.object_name = @object_name.to_s.sub(/\[\]$/,"")
1238
+ "[#{@auto_index}]"
1247
1239
  end
1248
- name = "#{object_name}#{index}[#{name}]"
1240
+ record_name = "#{object_name}#{index}[#{record_name}]"
1249
1241
 
1250
- @template.fields_for(name, *args, &block)
1242
+ @template.fields_for(record_name, record_object, fields_options, &block)
1251
1243
  end
1252
1244
 
1253
1245
  def label(method, text = nil, options = {}, &block)
@@ -1336,10 +1328,8 @@ module ActionView
1336
1328
  @object.respond_to?("#{association_name}_attributes=")
1337
1329
  end
1338
1330
 
1339
- def fields_for_with_nested_attributes(association_name, args, block)
1331
+ def fields_for_with_nested_attributes(association_name, association, options, block)
1340
1332
  name = "#{object_name}[#{association_name}_attributes]"
1341
- options = args.extract_options!
1342
- association = args.shift
1343
1333
  association = convert_to_model(association)
1344
1334
 
1345
1335
  if association.respond_to?(:persisted?)
@@ -274,10 +274,10 @@ module ActionView
274
274
  # You can optionally provide html attributes as the last element of the array.
275
275
  #
276
276
  # Examples:
277
- # options_for_select([ "Denmark", ["USA", {:class=>'bold'}], "Sweden" ], ["USA", "Sweden"])
277
+ # options_for_select([ "Denmark", ["USA", {:class => 'bold'}], "Sweden" ], ["USA", "Sweden"])
278
278
  # <option value="Denmark">Denmark</option>\n<option value="USA" class="bold" selected="selected">USA</option>\n<option value="Sweden" selected="selected">Sweden</option>
279
279
  #
280
- # options_for_select([["Dollar", "$", {:class=>"bold"}], ["Kroner", "DKK", {:onclick => "alert('HI');"}]])
280
+ # options_for_select([["Dollar", "$", {:class => "bold"}], ["Kroner", "DKK", {:onclick => "alert('HI');"}]])
281
281
  # <option value="$" class="bold">Dollar</option>\n<option value="DKK" onclick="alert('HI');">Kroner</option>
282
282
  #
283
283
  # If you wish to specify disabled option tags, set +selected+ to be a hash, with <tt>:disabled</tt> being either a value
@@ -82,22 +82,22 @@ module ActionView
82
82
  # select_tag "people", options_from_collection_for_select(@people, "id", "name")
83
83
  # # <select id="people" name="people"><option value="1">David</option></select>
84
84
  #
85
- # select_tag "people", "<option>David</option>"
85
+ # select_tag "people", "<option>David</option>".html_safe
86
86
  # # => <select id="people" name="people"><option>David</option></select>
87
87
  #
88
- # select_tag "count", "<option>1</option><option>2</option><option>3</option><option>4</option>"
88
+ # select_tag "count", "<option>1</option><option>2</option><option>3</option><option>4</option>".html_safe
89
89
  # # => <select id="count" name="count"><option>1</option><option>2</option>
90
90
  # # <option>3</option><option>4</option></select>
91
91
  #
92
- # select_tag "colors", "<option>Red</option><option>Green</option><option>Blue</option>", :multiple => true
92
+ # select_tag "colors", "<option>Red</option><option>Green</option><option>Blue</option>".html_safe, :multiple => true
93
93
  # # => <select id="colors" multiple="multiple" name="colors[]"><option>Red</option>
94
94
  # # <option>Green</option><option>Blue</option></select>
95
95
  #
96
- # select_tag "locations", "<option>Home</option><option selected="selected">Work</option><option>Out</option>"
96
+ # select_tag "locations", "<option>Home</option><option selected="selected">Work</option><option>Out</option>".html_safe
97
97
  # # => <select id="locations" name="locations"><option>Home</option><option selected='selected'>Work</option>
98
98
  # # <option>Out</option></select>
99
99
  #
100
- # select_tag "access", "<option>Read</option><option>Write</option>", :multiple => true, :class => 'form_input'
100
+ # select_tag "access", "<option>Read</option><option>Write</option>".html_safe, :multiple => true, :class => 'form_input'
101
101
  # # => <select class="form_input" id="access" multiple="multiple" name="access[]"><option>Read</option>
102
102
  # # <option>Write</option></select>
103
103
  #
@@ -107,7 +107,7 @@ module ActionView
107
107
  # select_tag "people", options_from_collection_for_select(@people, "id", "name"), :prompt => "Select something"
108
108
  # # => <select id="people" name="people"><option value="">Select something</option><option value="1">David</option></select>
109
109
  #
110
- # select_tag "destination", "<option>NYC</option><option>Paris</option><option>Rome</option>", :disabled => true
110
+ # select_tag "destination", "<option>NYC</option><option>Paris</option><option>Rome</option>".html_safe, :disabled => true
111
111
  # # => <select disabled="disabled" id="destination" name="destination"><option>NYC</option>
112
112
  # # <option>Paris</option><option>Rome</option></select>
113
113
  def select_tag(name, option_tags = nil, options = {})
@@ -15,10 +15,10 @@ module ActionView
15
15
  # = Action View Translation Helpers
16
16
  module Helpers
17
17
  module TranslationHelper
18
- # Delegates to I18n#translate but also performs three additional functions.
18
+ # Delegates to <tt>I18n#translate</tt> but also performs three additional functions.
19
19
  #
20
- # First, it'll pass the :rescue_format => :html option to I18n so that any
21
- # thrown MissingTranslation messages will be turned into inline spans that
20
+ # First, it'll pass the <tt>:rescue_format => :html</tt> option to I18n so that any
21
+ # thrown +MissingTranslation+ messages will be turned into inline spans that
22
22
  #
23
23
  # * have a "translation-missing" class set,
24
24
  # * contain the missing key as a title attribute and
@@ -54,7 +54,7 @@ module ActionView
54
54
  end
55
55
  alias :t :translate
56
56
 
57
- # Delegates to I18n.localize with no additional functionality.
57
+ # Delegates to <tt>I18n.localize</tt> with no additional functionality.
58
58
  def localize(*args)
59
59
  I18n.localize(*args)
60
60
  end
@@ -420,7 +420,7 @@ module ActionView
420
420
  end
421
421
 
422
422
  # Creates a link tag of the given +name+ using a URL created by the set of
423
- # +options+ if +condition+ is true, in which case only the name is
423
+ # +options+ if +condition+ is true, otherwise only the name is
424
424
  # returned. To specialize the default behavior, you can pass a block that
425
425
  # accepts the name or the full argument list for +link_to_unless+ (see the examples
426
426
  # in +link_to_unless+).
@@ -167,12 +167,12 @@ module ActionView
167
167
  @frozen_formats = true
168
168
  end
169
169
 
170
- # Overload formats= to reject ["*/*"] values.
170
+ # Overload formats= to expand ["*/*"] values and automatically
171
+ # add :html as fallback to :js.
171
172
  def formats=(values)
172
- if values && values.size == 1
173
- value = values.first
174
- values = nil if value == "*/*"
175
- values << :html if value == :js
173
+ if values
174
+ values.concat(_formats_defaults) if values.delete "*/*"
175
+ values << :html if values == [:js]
176
176
  end
177
177
  super(values)
178
178
  end
@@ -35,7 +35,7 @@ module ActionView #:nodoc:
35
35
  each_with_index do |path, i|
36
36
  path = path.to_s if path.is_a?(Pathname)
37
37
  next unless path.is_a?(String)
38
- self[i] = FileSystemResolver.new(path)
38
+ self[i] = OptimizedFileSystemResolver.new(path)
39
39
  end
40
40
  end
41
41
  end
@@ -79,9 +79,9 @@ module ActionView
79
79
  # you are handling out-of-band metadata, you are
80
80
  # also responsible for alerting the user to any
81
81
  # problems with converting the user's data to
82
- # the default_internal.
82
+ # the <tt>default_internal</tt>.
83
83
  #
84
- # To do so, simply raise the raise WrongEncodingError
84
+ # To do so, simply raise the raise +WrongEncodingError+
85
85
  # as follows:
86
86
  #
87
87
  # raise WrongEncodingError.new(
@@ -198,7 +198,7 @@ module ActionView
198
198
  # Among other things, this method is responsible for properly setting
199
199
  # the encoding of the source. Until this point, we assume that the
200
200
  # source is BINARY data. If no additional information is supplied,
201
- # we assume the encoding is the same as Encoding.default_external.
201
+ # we assume the encoding is the same as <tt>Encoding.default_external</tt>.
202
202
  #
203
203
  # The user can also specify the encoding via a comment on the first
204
204
  # line of the template (# encoding: NAME-OF-ENCODING). This will work
@@ -212,8 +212,8 @@ module ActionView
212
212
  # specifying the encoding. For instance, ERB supports <%# encoding: %>
213
213
  #
214
214
  # Otherwise, after we figure out the correct encoding, we then
215
- # encode the source into Encoding.default_internal. In general,
216
- # this means that templates will be UTF-8 inside of Rails,
215
+ # encode the source into <tt>Encoding.default_internal</tt>.
216
+ # In general, this means that templates will be UTF-8 inside of Rails,
217
217
  # regardless of the original source encoding.
218
218
  def compile(view, mod) #:nodoc:
219
219
  method_name = self.method_name
@@ -1,3 +1,4 @@
1
+ require "active_support/core_ext/array/wrap"
1
2
  require "active_support/core_ext/enumerable"
2
3
 
3
4
  module ActionView
@@ -29,6 +30,7 @@ module ActionView
29
30
 
30
31
  def initialize(paths, path, prefixes, partial, details, *)
31
32
  @path = path
33
+ prefixes = Array.wrap(prefixes)
32
34
  display_paths = paths.compact.map{ |p| p.to_s.inspect }.join(", ")
33
35
  template_type = if partial
34
36
  "partial"
@@ -1,5 +1,4 @@
1
1
  require 'active_support/core_ext/class/attribute_accessors'
2
- require 'action_view/template'
3
2
  require 'action_view/template/handler'
4
3
  require 'erubis'
5
4
 
@@ -10,17 +10,16 @@ module ActionView
10
10
  attr_reader :name, :prefix, :partial, :virtual
11
11
  alias_method :partial?, :partial
12
12
 
13
- def initialize(name, prefix, partial)
14
- @name, @prefix, @partial = name, prefix, partial
15
- rebuild(@name, @prefix, @partial)
13
+ def self.build(name, prefix, partial)
14
+ virtual = ""
15
+ virtual << "#{prefix}/" unless prefix.empty?
16
+ virtual << (partial ? "_#{name}" : name)
17
+ new name, prefix, partial, virtual
16
18
  end
17
19
 
18
- def rebuild(name, prefix, partial)
19
- @virtual = ""
20
- @virtual << "#{prefix}/" unless prefix.empty?
21
- @virtual << (partial ? "_#{name}" : name)
22
-
23
- self.replace(@virtual)
20
+ def initialize(name, prefix, partial, virtual)
21
+ @name, @prefix, @partial = name, prefix, partial
22
+ super(virtual)
24
23
  end
25
24
  end
26
25
 
@@ -60,7 +59,7 @@ module ActionView
60
59
 
61
60
  # Helpers that builds a path. Useful for building virtual paths.
62
61
  def build_path(name, prefix, partial)
63
- Path.new(name, prefix, partial)
62
+ Path.build(name, prefix, partial)
64
63
  end
65
64
 
66
65
  # Handles templates caching. If a key is given and caching is on
@@ -112,7 +111,8 @@ module ActionView
112
111
  end
113
112
  end
114
113
 
115
- class PathResolver < Resolver
114
+ # An abstract class that implements a Resolver with path semantics.
115
+ class PathResolver < Resolver #:nodoc:
116
116
  EXTENSIONS = [:locale, :formats, :handlers]
117
117
  DEFAULT_PATTERN = ":prefix/:action{.:locale,}{.:formats,}{.:handlers,}"
118
118
 
@@ -124,13 +124,12 @@ module ActionView
124
124
  private
125
125
 
126
126
  def find_templates(name, prefix, partial, details)
127
- path = build_path(name, prefix, partial)
128
- extensions = Hash[EXTENSIONS.map { |ext| [ext, details[ext]] }.flatten(0)]
129
- query(path, extensions, details[:formats])
127
+ path = Path.build(name, prefix, partial)
128
+ query(path, details, details[:formats])
130
129
  end
131
130
 
132
- def query(path, exts, formats)
133
- query = build_query(path, exts)
131
+ def query(path, details, formats)
132
+ query = build_query(path, details)
134
133
  templates = []
135
134
  sanitizer = Hash.new { |h,k| h[k] = Dir["#{File.dirname(k)}/*"] }
136
135
 
@@ -138,7 +137,7 @@ module ActionView
138
137
  next if File.directory?(p) || !sanitizer[p].include?(p)
139
138
 
140
139
  handler, format = extract_handler_and_format(p, formats)
141
- contents = File.open(p, "rb") {|io| io.read }
140
+ contents = File.open(p, "rb") { |io| io.read }
142
141
 
143
142
  templates << Template.new(contents, File.expand_path(p), handler,
144
143
  :virtual_path => path.virtual, :format => format, :updated_at => mtime(p))
@@ -147,18 +146,15 @@ module ActionView
147
146
  templates
148
147
  end
149
148
 
150
- # Helper for building query glob string based on resolver's pattern.
151
- def build_query(path, exts)
149
+ # Helper for building query glob string based on resolver's pattern.
150
+ def build_query(path, details)
152
151
  query = @pattern.dup
153
152
  query.gsub!(/\:prefix(\/)?/, path.prefix.empty? ? "" : "#{path.prefix}\\1") # prefix can be empty...
154
153
  query.gsub!(/\:action/, path.partial? ? "_#{path.name}" : path.name)
155
154
 
156
- exts.each { |ext, variants|
155
+ details.each do |ext, variants|
157
156
  query.gsub!(/\:#{ext}/, "{#{variants.compact.uniq.join(',')}}")
158
- }
159
-
160
- query.gsub!('.{html,', '.{html,text.html,')
161
- query.gsub!('.{text,', '.{text,text.plain,')
157
+ end
162
158
 
163
159
  File.expand_path(query, @path)
164
160
  end
@@ -235,9 +231,25 @@ module ActionView
235
231
  alias :== :eql?
236
232
  end
237
233
 
234
+ # An Optimized resolver for Rails' most common case.
235
+ class OptimizedFileSystemResolver < FileSystemResolver #:nodoc:
236
+ def build_query(path, details)
237
+ exts = EXTENSIONS.map { |ext| details[ext] }
238
+ query = File.join(@path, path)
239
+
240
+ exts.each do |ext|
241
+ query << "{"
242
+ ext.compact.each { |e| query << ".#{e}," }
243
+ query << "}"
244
+ end
245
+
246
+ query
247
+ end
248
+ end
249
+
238
250
  # The same as FileSystemResolver but does not allow templates to store
239
251
  # a virtual path since it is invalid for such resolvers.
240
- class FallbackFileSystemResolver < FileSystemResolver
252
+ class FallbackFileSystemResolver < FileSystemResolver #:nodoc:
241
253
  def self.instances
242
254
  [new(""), new("/")]
243
255
  end
@@ -34,12 +34,12 @@ module Sprockets
34
34
  app.assets = asset_environment(app)
35
35
 
36
36
  ActiveSupport.on_load(:action_view) do
37
- app.assets.context.instance_eval do
37
+ app.assets.context_class.instance_eval do
38
38
  include ::ActionView::Helpers::SprocketsHelper
39
39
  end
40
40
  end
41
41
 
42
- app.routes.append do
42
+ app.routes.prepend do
43
43
  mount app.assets => assets.prefix
44
44
  end
45
45
 
@@ -91,7 +91,7 @@ module Sprockets
91
91
  compressor
92
92
  when :yui
93
93
  require 'yui/compressor'
94
- YUI::JavaScriptCompressor.new(:munge => true)
94
+ YUI::CssCompressor.new
95
95
  else
96
96
  sym
97
97
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: actionpack
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease: 6
5
- version: 3.1.0.beta1
5
+ version: 3.1.0.rc1
6
6
  platform: ruby
7
7
  authors:
8
8
  - David Heinemeier Hansson
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-05-04 00:00:00 -05:00
13
+ date: 2011-05-21 00:00:00 -05:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -21,7 +21,7 @@ dependencies:
21
21
  requirements:
22
22
  - - "="
23
23
  - !ruby/object:Gem::Version
24
- version: 3.1.0.beta1
24
+ version: 3.1.0.rc1
25
25
  type: :runtime
26
26
  version_requirements: *id001
27
27
  - !ruby/object:Gem::Dependency
@@ -32,7 +32,7 @@ dependencies:
32
32
  requirements:
33
33
  - - "="
34
34
  - !ruby/object:Gem::Version
35
- version: 3.1.0.beta1
35
+ version: 3.1.0.rc1
36
36
  type: :runtime
37
37
  version_requirements: *id002
38
38
  - !ruby/object:Gem::Dependency
@@ -76,7 +76,7 @@ dependencies:
76
76
  requirements:
77
77
  - - ~>
78
78
  - !ruby/object:Gem::Version
79
- version: 1.3.0.beta
79
+ version: 1.3.0.beta2
80
80
  type: :runtime
81
81
  version_requirements: *id006
82
82
  - !ruby/object:Gem::Dependency
@@ -98,7 +98,7 @@ dependencies:
98
98
  requirements:
99
99
  - - ~>
100
100
  - !ruby/object:Gem::Version
101
- version: 0.7.2
101
+ version: 0.8.1
102
102
  type: :runtime
103
103
  version_requirements: *id008
104
104
  - !ruby/object:Gem::Dependency
@@ -109,7 +109,7 @@ dependencies:
109
109
  requirements:
110
110
  - - ~>
111
111
  - !ruby/object:Gem::Version
112
- version: 2.0.0.beta.2
112
+ version: 2.0.0.beta.5
113
113
  type: :runtime
114
114
  version_requirements: *id009
115
115
  - !ruby/object:Gem::Dependency
@@ -347,7 +347,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
347
347
  version: 1.3.1
348
348
  requirements:
349
349
  - none
350
- rubyforge_project: actionpack
350
+ rubyforge_project:
351
351
  rubygems_version: 1.6.2
352
352
  signing_key:
353
353
  specification_version: 3