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.
- data/CHANGELOG +57 -4
- data/README.rdoc +5 -5
- data/lib/abstract_controller/base.rb +25 -13
- data/lib/abstract_controller/callbacks.rb +2 -2
- data/lib/abstract_controller/layouts.rb +3 -3
- data/lib/abstract_controller/rendering.rb +22 -6
- data/lib/abstract_controller/url_for.rb +6 -0
- data/lib/abstract_controller/view_paths.rb +1 -1
- data/lib/action_controller/log_subscriber.rb +3 -1
- data/lib/action_controller/metal/compatibility.rb +4 -7
- data/lib/action_controller/metal/implicit_render.rb +7 -9
- data/lib/action_controller/metal/instrumentation.rb +1 -1
- data/lib/action_controller/metal/params_wrapper.rb +37 -26
- data/lib/action_controller/metal/request_forgery_protection.rb +4 -1
- data/lib/action_controller/metal/responder.rb +6 -1
- data/lib/action_controller/metal/url_for.rb +21 -0
- data/lib/action_controller/test_case.rb +6 -1
- data/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +1 -1
- data/lib/action_dispatch/http/cache.rb +12 -14
- data/lib/action_dispatch/http/rack_cache.rb +6 -2
- data/lib/action_dispatch/http/response.rb +41 -15
- data/lib/action_dispatch/http/url.rb +1 -1
- data/lib/action_dispatch/middleware/cookies.rb +3 -3
- data/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb +1 -1
- data/lib/action_dispatch/routing.rb +3 -3
- data/lib/action_dispatch/routing/mapper.rb +33 -28
- data/lib/action_dispatch/routing/route_set.rb +6 -3
- data/lib/action_dispatch/routing/url_for.rb +4 -4
- data/lib/action_dispatch/testing/assertions/selector.rb +1 -1
- data/lib/action_dispatch/testing/performance_test.rb +6 -13
- data/lib/action_dispatch/testing/test_process.rb +1 -1
- data/lib/action_pack/version.rb +1 -1
- data/lib/action_view.rb +1 -0
- data/lib/action_view/base.rb +5 -5
- data/lib/action_view/helpers/asset_paths.rb +0 -1
- data/lib/action_view/helpers/atom_feed_helper.rb +6 -6
- data/lib/action_view/helpers/cache_helper.rb +1 -1
- data/lib/action_view/helpers/capture_helper.rb +6 -2
- data/lib/action_view/helpers/date_helper.rb +119 -75
- data/lib/action_view/helpers/form_helper.rb +26 -36
- data/lib/action_view/helpers/form_options_helper.rb +2 -2
- data/lib/action_view/helpers/form_tag_helper.rb +6 -6
- data/lib/action_view/helpers/translation_helper.rb +4 -4
- data/lib/action_view/helpers/url_helper.rb +1 -1
- data/lib/action_view/lookup_context.rb +5 -5
- data/lib/action_view/path_set.rb +1 -1
- data/lib/action_view/template.rb +5 -5
- data/lib/action_view/template/error.rb +2 -0
- data/lib/action_view/template/handlers/erb.rb +0 -1
- data/lib/action_view/template/resolver.rb +37 -25
- data/lib/sprockets/railtie.rb +3 -3
- 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(
|
588
|
-
builder = instantiate_builder(
|
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(
|
902
|
-
|
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 =
|
905
|
+
object_name = record_name
|
909
906
|
else
|
910
|
-
object =
|
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(
|
1223
|
-
if
|
1224
|
-
|
1225
|
-
|
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
|
1224
|
+
case record_name
|
1237
1225
|
when String, Symbol
|
1238
|
-
if nested_attributes_association?(
|
1239
|
-
return fields_for_with_nested_attributes(
|
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
|
-
|
1245
|
-
|
1246
|
-
|
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
|
-
|
1240
|
+
record_name = "#{object_name}#{index}[#{record_name}]"
|
1249
1241
|
|
1250
|
-
@template.fields_for(
|
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,
|
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
|
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,
|
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
|
170
|
+
# Overload formats= to expand ["*/*"] values and automatically
|
171
|
+
# add :html as fallback to :js.
|
171
172
|
def formats=(values)
|
172
|
-
if values
|
173
|
-
|
174
|
-
values
|
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
|
data/lib/action_view/path_set.rb
CHANGED
data/lib/action_view/template.rb
CHANGED
@@ -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
|
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"
|
@@ -10,17 +10,16 @@ module ActionView
|
|
10
10
|
attr_reader :name, :prefix, :partial, :virtual
|
11
11
|
alias_method :partial?, :partial
|
12
12
|
|
13
|
-
def
|
14
|
-
|
15
|
-
|
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
|
19
|
-
@
|
20
|
-
|
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.
|
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
|
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 =
|
128
|
-
|
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,
|
133
|
-
query = build_query(path,
|
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,
|
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
|
-
|
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
|
data/lib/sprockets/railtie.rb
CHANGED
@@ -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.
|
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.
|
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::
|
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.
|
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-
|
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.
|
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.
|
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.
|
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.
|
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.
|
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:
|
350
|
+
rubyforge_project:
|
351
351
|
rubygems_version: 1.6.2
|
352
352
|
signing_key:
|
353
353
|
specification_version: 3
|