actionpack 3.2.15 → 3.2.19

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.md CHANGED
@@ -1,3 +1,45 @@
1
+ ## Rails 3.2.19 (Jul 2, 2014) ##
2
+
3
+ * Fix regression when using `ActionView::Helpers::TranslationHelper#translate` with
4
+ `options[:raise]`.
5
+
6
+ This regression was introduced at ec16ba75a5493b9da972eea08bae630eba35b62f.
7
+
8
+ *Shota Fukumori (sora_h)*
9
+
10
+
11
+ ## Rails 3.2.18 (May 6, 2014) ##
12
+
13
+ * Only accept actions without File::SEPARATOR in the name.
14
+
15
+ This will avoid directory traversal in implicit render.
16
+
17
+ Fixes: CVE-2014-0130
18
+
19
+ *Rafael Mendonça França*
20
+
21
+
22
+ ## Rails 3.2.17 (Feb 18, 2014) ##
23
+
24
+ * Use the reference for the mime type to get the format
25
+
26
+ Fixes: CVE-2014-0082
27
+
28
+ * Escape format, negative_format and units options of number helpers
29
+
30
+ Fixes: CVE-2014-0081
31
+
32
+
33
+ ## Rails 3.2.16 (Dec 12, 2013) ##
34
+
35
+ * Deep Munge the parameters for GET and POST Fixes CVE-2013-6417
36
+
37
+ * Stop using i18n's built in HTML error handling. Fixes: CVE-2013-4491
38
+
39
+ * Escape the unit value provided to number_to_currency Fixes CVE-2013-6415
40
+
41
+ * Only use valid mime type symbols as cache keys CVE-2013-6414
42
+
1
43
  ## Rails 3.2.15 (Oct 16, 2013) ##
2
44
 
3
45
  * Fix `ActionDispatch::RemoteIp::GetIp#calculate_ip` to only check for spoofing
@@ -112,7 +112,7 @@ module AbstractController
112
112
  def process(action, *args)
113
113
  @_action_name = action_name = action.to_s
114
114
 
115
- unless action_name = method_for_action(action_name)
115
+ unless action_name = _find_action_name(action_name)
116
116
  raise ActionNotFound, "The action '#{action}' could not be found for #{self.class.name}"
117
117
  end
118
118
 
@@ -138,7 +138,7 @@ module AbstractController
138
138
  # available action consider actions that are also available
139
139
  # through other means, for example, implicit render ones.
140
140
  def available_action?(action_name)
141
- method_for_action(action_name).present?
141
+ _find_action_name(action_name).present?
142
142
  end
143
143
 
144
144
  private
@@ -181,6 +181,23 @@ module AbstractController
181
181
  action_missing(@_action_name, *args)
182
182
  end
183
183
 
184
+ # Takes an action name and returns the name of the method that will
185
+ # handle the action.
186
+ #
187
+ # It checks if the action name is valid and returns false otherwise.
188
+ #
189
+ # See method_for_action for more information.
190
+ #
191
+ # ==== Parameters
192
+ # * <tt>action_name</tt> - An action name to find a method name for
193
+ #
194
+ # ==== Returns
195
+ # * <tt>string</tt> - The name of the method that handles the action
196
+ # * false - No valid method name could be found. Raise ActionNotFound.
197
+ def _find_action_name(action_name)
198
+ _valid_action_name?(action_name) && method_for_action(action_name)
199
+ end
200
+
184
201
  # Takes an action name and returns the name of the method that will
185
202
  # handle the action. In normal cases, this method returns the same
186
203
  # name as it receives. By default, if #method_for_action receives
@@ -203,11 +220,16 @@ module AbstractController
203
220
  #
204
221
  # ==== Returns
205
222
  # * <tt>string</tt> - The name of the method that handles the action
206
- # * <tt>nil</tt> - No method name could be found. Raise ActionNotFound.
223
+ # * <tt>nil</tt> - No method name could be found.
207
224
  def method_for_action(action_name)
208
225
  if action_method?(action_name) then action_name
209
226
  elsif respond_to?(:action_missing, true) then "_handle_action_missing"
210
227
  end
211
228
  end
229
+
230
+ # Checks if the action name is valid and returns false otherwise.
231
+ def _valid_action_name?(action_name)
232
+ action_name.to_s !~ Regexp.new(File::SEPARATOR)
233
+ end
212
234
  end
213
235
  end
@@ -22,7 +22,7 @@ module ActionController
22
22
  #
23
23
  # ==== Options
24
24
  # * <tt>only</tt> - The callback should be run only for this action
25
- # * <tt>except<tt> - The callback should be run for all actions except this action
25
+ # * <tt>except</tt> - The callback should be run for all actions except this action
26
26
  def force_ssl(options = {})
27
27
  host = options.delete(:host)
28
28
  before_filter(options) do
@@ -228,13 +228,13 @@ module ActionDispatch
228
228
 
229
229
  # Override Rack's GET method to support indifferent access
230
230
  def GET
231
- @env["action_dispatch.request.query_parameters"] ||= (normalize_parameters(super) || {})
231
+ @env["action_dispatch.request.query_parameters"] ||= deep_munge(normalize_parameters(super) || {})
232
232
  end
233
233
  alias :query_parameters :GET
234
234
 
235
235
  # Override Rack's POST method to support indifferent access
236
236
  def POST
237
- @env["action_dispatch.request.request_parameters"] ||= (normalize_parameters(super) || {})
237
+ @env["action_dispatch.request.request_parameters"] ||= deep_munge(normalize_parameters(super) || {})
238
238
  end
239
239
  alias :request_parameters :POST
240
240
 
@@ -2,7 +2,7 @@ module ActionPack
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 3
4
4
  MINOR = 2
5
- TINY = 15
5
+ TINY = 19
6
6
  PRE = nil
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
@@ -129,21 +129,27 @@ module ActionView
129
129
  #
130
130
  # number_to_currency(-1234567890.50, :negative_format => "(%u%n)")
131
131
  # # => ($1,234,567,890.50)
132
- # number_to_currency(1234567890.50, :unit => "&pound;", :separator => ",", :delimiter => "")
133
- # # => &pound;1234567890,50
134
- # number_to_currency(1234567890.50, :unit => "&pound;", :separator => ",", :delimiter => "", :format => "%n %u")
135
- # # => 1234567890,50 &pound;
132
+ # number_to_currency(1234567890.50, :unit => "R$", :separator => ",", :delimiter => "")
133
+ # # => R$1234567890,50
134
+ # number_to_currency(1234567890.50, :unit => "R$", :separator => ",", :delimiter => "", :format => "%n %u")
135
+ # # => 1234567890,50 R$
136
136
  def number_to_currency(number, options = {})
137
137
  return unless number
138
138
 
139
139
  options.symbolize_keys!
140
140
 
141
+ options[:delimiter] = ERB::Util.html_escape(options[:delimiter]) if options[:delimiter]
142
+ options[:separator] = ERB::Util.html_escape(options[:separator]) if options[:separator]
143
+ options[:format] = ERB::Util.html_escape(options[:format]) if options[:format]
144
+ options[:negative_format] = ERB::Util.html_escape(options[:negative_format]) if options[:negative_format]
145
+
141
146
  defaults = I18n.translate(:'number.format', :locale => options[:locale], :default => {})
142
147
  currency = I18n.translate(:'number.currency.format', :locale => options[:locale], :default => {})
143
148
  currency[:negative_format] ||= "-" + currency[:format] if currency[:format]
144
149
 
145
150
  defaults = DEFAULT_CURRENCY_VALUES.merge(defaults).merge!(currency)
146
151
  defaults[:negative_format] = "-" + options[:format] if options[:format]
152
+
147
153
  options = defaults.merge!(options)
148
154
 
149
155
  unit = options.delete(:unit)
@@ -156,7 +162,7 @@ module ActionView
156
162
 
157
163
  begin
158
164
  value = number_with_precision(number, options.merge(:raise => true))
159
- format.gsub(/%n/, value).gsub(/%u/, unit).html_safe
165
+ format.gsub(/%n/, ERB::Util.html_escape(value)).gsub(/%u/, ERB::Util.html_escape(unit)).html_safe
160
166
  rescue InvalidNumberError => e
161
167
  if options[:raise]
162
168
  raise
@@ -206,6 +212,9 @@ module ActionView
206
212
 
207
213
  options.symbolize_keys!
208
214
 
215
+ options[:delimiter] = ERB::Util.html_escape(options[:delimiter]) if options[:delimiter]
216
+ options[:separator] = ERB::Util.html_escape(options[:separator]) if options[:separator]
217
+
209
218
  defaults = I18n.translate(:'number.format', :locale => options[:locale], :default => {})
210
219
  percentage = I18n.translate(:'number.percentage.format', :locale => options[:locale], :default => {})
211
220
  defaults = defaults.merge(percentage)
@@ -255,6 +264,9 @@ module ActionView
255
264
  def number_with_delimiter(number, options = {})
256
265
  options.symbolize_keys!
257
266
 
267
+ options[:delimiter] = ERB::Util.html_escape(options[:delimiter]) if options[:delimiter]
268
+ options[:separator] = ERB::Util.html_escape(options[:separator]) if options[:separator]
269
+
258
270
  begin
259
271
  Float(number)
260
272
  rescue ArgumentError, TypeError
@@ -578,7 +590,7 @@ module ActionView
578
590
  units = options.delete :units
579
591
  unit_exponents = case units
580
592
  when Hash
581
- units
593
+ units = Hash[units.map { |k, v| [k, ERB::Util.html_escape(v)] }]
582
594
  when String, Symbol
583
595
  I18n.translate(:"#{units}", :locale => options[:locale], :raise => true)
584
596
  when nil
@@ -1,24 +1,14 @@
1
1
  require 'action_view/helpers/tag_helper'
2
2
  require 'i18n/exceptions'
3
3
 
4
- module I18n
5
- class ExceptionHandler
6
- include Module.new {
7
- def call(exception, locale, key, options)
8
- exception.is_a?(MissingTranslation) && options[:rescue_format] == :html ? super.html_safe : super
9
- end
10
- }
11
- end
12
- end
13
-
14
4
  module ActionView
15
5
  # = Action View Translation Helpers
16
6
  module Helpers
17
7
  module TranslationHelper
18
8
  # Delegates to <tt>I18n#translate</tt> but also performs three additional functions.
19
9
  #
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
10
+ # First, it will ensure that any thrown +MissingTranslation+ messages will be turned
11
+ # into inline spans that:
22
12
  #
23
13
  # * have a "translation-missing" class set,
24
14
  # * contain the missing key as a title attribute and
@@ -44,7 +34,15 @@ module ActionView
44
34
  # naming convention helps to identify translations that include HTML tags so that
45
35
  # you know what kind of output to expect when you call translate in a template.
46
36
  def translate(key, options = {})
47
- options.merge!(:rescue_format => :html) unless options.key?(:rescue_format)
37
+ # If the user has specified rescue_format then pass it all through, otherwise use
38
+ # raise and do the work ourselves
39
+ if options.key?(:raise) || options.key?(:rescue_format)
40
+ raise_error = options[:raise] || options[:rescue_format]
41
+ else
42
+ raise_error = false
43
+ options[:raise] = true
44
+ end
45
+
48
46
  if html_safe_translation_key?(key)
49
47
  html_safe_options = options.dup
50
48
  options.except(*I18n::RESERVED_KEYS).each do |name, value|
@@ -58,6 +56,11 @@ module ActionView
58
56
  else
59
57
  I18n.translate(scope_key_by_partial(key), options)
60
58
  end
59
+ rescue I18n::MissingTranslationData => e
60
+ raise e if raise_error
61
+
62
+ keys = I18n.normalize_keys(e.locale, e.key, e.options[:scope])
63
+ content_tag('span', keys.last.to_s.titleize, :class => 'translation_missing', :title => "translation missing: #{keys.join('.')}")
61
64
  end
62
65
  alias :t :translate
63
66
 
@@ -62,6 +62,13 @@ module ActionView
62
62
  @details_keys = Hash.new
63
63
 
64
64
  def self.get(details)
65
+ if details[:formats]
66
+ details = details.dup
67
+ syms = Set.new Mime::SET.symbols
68
+ details[:formats] = details[:formats].select { |v|
69
+ syms.include? v
70
+ }
71
+ end
65
72
  @details_keys[details] ||= new
66
73
  end
67
74
 
@@ -120,13 +120,7 @@ module ActionView
120
120
  def query(path, details, formats)
121
121
  query = build_query(path, details)
122
122
 
123
- # deals with case-insensitive file systems.
124
- sanitizer = Hash.new { |h,dir| h[dir] = Dir["#{dir}/*"] }
125
-
126
- template_paths = Dir[query].reject { |filename|
127
- File.directory?(filename) ||
128
- !sanitizer[File.dirname(filename)].include?(filename)
129
- }
123
+ template_paths = find_template_paths query
130
124
 
131
125
  template_paths.map { |template|
132
126
  handler, format = extract_handler_and_format(template, formats)
@@ -139,6 +133,26 @@ module ActionView
139
133
  }
140
134
  end
141
135
 
136
+ if RUBY_VERSION >= '2.2.0'
137
+ def find_template_paths(query)
138
+ Dir[query].reject { |filename|
139
+ File.directory?(filename) ||
140
+ # deals with case-insensitive file systems.
141
+ !File.fnmatch(query, filename, File::FNM_EXTGLOB)
142
+ }
143
+ end
144
+ else
145
+ def find_template_paths(query)
146
+ # deals with case-insensitive file systems.
147
+ sanitizer = Hash.new { |h,dir| h[dir] = Dir["#{dir}/*"] }
148
+
149
+ Dir[query].reject { |filename|
150
+ File.directory?(filename) ||
151
+ !sanitizer[File.dirname(filename)].include?(filename)
152
+ }
153
+ end
154
+ end
155
+
142
156
  # Helper for building query glob string based on resolver's pattern.
143
157
  def build_query(path, details)
144
158
  query = @pattern.dup
@@ -23,7 +23,7 @@ module ActionView #:nodoc:
23
23
  end
24
24
 
25
25
  def formats
26
- [@mime_type.to_sym]
26
+ [@mime_type.respond_to?(:ref) ? @mime_type.ref : @mime_type.to_s]
27
27
  end
28
28
  end
29
29
  end
metadata CHANGED
@@ -1,162 +1,191 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: actionpack
3
- version: !ruby/object:Gem::Version
4
- version: 3.2.15
3
+ version: !ruby/object:Gem::Version
4
+ hash: 41
5
+ prerelease:
6
+ segments:
7
+ - 3
8
+ - 2
9
+ - 19
10
+ version: 3.2.19
5
11
  platform: ruby
6
- authors:
12
+ authors:
7
13
  - David Heinemeier Hansson
8
14
  autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
- date: 2013-10-16 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2014-07-02 00:00:00 -03:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - "="
26
+ - !ruby/object:Gem::Version
27
+ hash: 41
28
+ segments:
29
+ - 3
30
+ - 2
31
+ - 19
32
+ version: 3.2.19
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ prerelease: false
14
36
  name: activesupport
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '='
18
- - !ruby/object:Gem::Version
19
- version: 3.2.15
37
+ - !ruby/object:Gem::Dependency
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - "="
42
+ - !ruby/object:Gem::Version
43
+ hash: 41
44
+ segments:
45
+ - 3
46
+ - 2
47
+ - 19
48
+ version: 3.2.19
20
49
  type: :runtime
50
+ version_requirements: *id002
21
51
  prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - '='
25
- - !ruby/object:Gem::Version
26
- version: 3.2.15
27
- - !ruby/object:Gem::Dependency
28
52
  name: activemodel
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - '='
32
- - !ruby/object:Gem::Version
33
- version: 3.2.15
53
+ - !ruby/object:Gem::Dependency
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ hash: 11
60
+ segments:
61
+ - 1
62
+ - 2
63
+ version: "1.2"
34
64
  type: :runtime
65
+ version_requirements: *id003
35
66
  prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - '='
39
- - !ruby/object:Gem::Version
40
- version: 3.2.15
41
- - !ruby/object:Gem::Dependency
42
67
  name: rack-cache
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '1.2'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '1.2'
55
- - !ruby/object:Gem::Dependency
56
- name: builder
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
68
+ - !ruby/object:Gem::Dependency
69
+ requirement: &id004 !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ~>
73
+ - !ruby/object:Gem::Version
74
+ hash: 7
75
+ segments:
76
+ - 3
77
+ - 0
78
+ - 0
61
79
  version: 3.0.0
62
80
  type: :runtime
81
+ version_requirements: *id004
63
82
  prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: 3.0.0
69
- - !ruby/object:Gem::Dependency
70
- name: rack
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
83
+ name: builder
84
+ - !ruby/object:Gem::Dependency
85
+ requirement: &id005 !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ~>
89
+ - !ruby/object:Gem::Version
90
+ hash: 13
91
+ segments:
92
+ - 1
93
+ - 4
94
+ - 5
75
95
  version: 1.4.5
76
96
  type: :runtime
97
+ version_requirements: *id005
77
98
  prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: 1.4.5
83
- - !ruby/object:Gem::Dependency
84
- name: rack-test
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
99
+ name: rack
100
+ - !ruby/object:Gem::Dependency
101
+ requirement: &id006 !ruby/object:Gem::Requirement
102
+ none: false
103
+ requirements:
104
+ - - ~>
105
+ - !ruby/object:Gem::Version
106
+ hash: 5
107
+ segments:
108
+ - 0
109
+ - 6
110
+ - 1
89
111
  version: 0.6.1
90
112
  type: :runtime
113
+ version_requirements: *id006
91
114
  prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: 0.6.1
97
- - !ruby/object:Gem::Dependency
98
- name: journey
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
115
+ name: rack-test
116
+ - !ruby/object:Gem::Dependency
117
+ requirement: &id007 !ruby/object:Gem::Requirement
118
+ none: false
119
+ requirements:
120
+ - - ~>
121
+ - !ruby/object:Gem::Version
122
+ hash: 31
123
+ segments:
124
+ - 1
125
+ - 0
126
+ - 4
103
127
  version: 1.0.4
104
128
  type: :runtime
129
+ version_requirements: *id007
105
130
  prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: 1.0.4
111
- - !ruby/object:Gem::Dependency
112
- name: sprockets
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
131
+ name: journey
132
+ - !ruby/object:Gem::Dependency
133
+ requirement: &id008 !ruby/object:Gem::Requirement
134
+ none: false
135
+ requirements:
136
+ - - ~>
137
+ - !ruby/object:Gem::Version
138
+ hash: 5
139
+ segments:
140
+ - 2
141
+ - 2
142
+ - 1
117
143
  version: 2.2.1
118
144
  type: :runtime
145
+ version_requirements: *id008
119
146
  prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: 2.2.1
125
- - !ruby/object:Gem::Dependency
126
- name: erubis
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
147
+ name: sprockets
148
+ - !ruby/object:Gem::Dependency
149
+ requirement: &id009 !ruby/object:Gem::Requirement
150
+ none: false
151
+ requirements:
152
+ - - ~>
153
+ - !ruby/object:Gem::Version
154
+ hash: 19
155
+ segments:
156
+ - 2
157
+ - 7
158
+ - 0
131
159
  version: 2.7.0
132
160
  type: :runtime
161
+ version_requirements: *id009
133
162
  prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: 2.7.0
139
- - !ruby/object:Gem::Dependency
140
- name: tzinfo
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
163
+ name: erubis
164
+ - !ruby/object:Gem::Dependency
165
+ requirement: &id010 !ruby/object:Gem::Requirement
166
+ none: false
167
+ requirements:
168
+ - - ~>
169
+ - !ruby/object:Gem::Version
170
+ hash: 41
171
+ segments:
172
+ - 0
173
+ - 3
174
+ - 29
145
175
  version: 0.3.29
146
176
  type: :development
177
+ version_requirements: *id010
147
178
  prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: 0.3.29
153
- description: Web apps on Rails. Simple, battle-tested conventions for building and
154
- testing MVC web applications. Works with any Rack-compatible server.
179
+ name: tzinfo
180
+ description: Web apps on Rails. Simple, battle-tested conventions for building and testing MVC web applications. Works with any Rack-compatible server.
155
181
  email: david@loudthinking.com
156
182
  executables: []
183
+
157
184
  extensions: []
185
+
158
186
  extra_rdoc_files: []
159
- files:
187
+
188
+ files:
160
189
  - CHANGELOG.md
161
190
  - README.rdoc
162
191
  - MIT-LICENSE
@@ -348,29 +377,41 @@ files:
348
377
  - lib/sprockets/helpers.rb
349
378
  - lib/sprockets/railtie.rb
350
379
  - lib/sprockets/static_compiler.rb
380
+ has_rdoc: true
351
381
  homepage: http://www.rubyonrails.org
352
- licenses:
382
+ licenses:
353
383
  - MIT
354
- metadata: {}
355
384
  post_install_message:
356
385
  rdoc_options: []
357
- require_paths:
386
+
387
+ require_paths:
358
388
  - lib
359
- required_ruby_version: !ruby/object:Gem::Requirement
360
- requirements:
389
+ required_ruby_version: !ruby/object:Gem::Requirement
390
+ none: false
391
+ requirements:
361
392
  - - ">="
362
- - !ruby/object:Gem::Version
393
+ - !ruby/object:Gem::Version
394
+ hash: 57
395
+ segments:
396
+ - 1
397
+ - 8
398
+ - 7
363
399
  version: 1.8.7
364
- required_rubygems_version: !ruby/object:Gem::Requirement
365
- requirements:
400
+ required_rubygems_version: !ruby/object:Gem::Requirement
401
+ none: false
402
+ requirements:
366
403
  - - ">="
367
- - !ruby/object:Gem::Version
368
- version: '0'
369
- requirements:
404
+ - !ruby/object:Gem::Version
405
+ hash: 3
406
+ segments:
407
+ - 0
408
+ version: "0"
409
+ requirements:
370
410
  - none
371
411
  rubyforge_project:
372
- rubygems_version: 2.0.2
412
+ rubygems_version: 1.6.2
373
413
  signing_key:
374
- specification_version: 4
414
+ specification_version: 3
375
415
  summary: Web-flow and rendering framework putting the VC in MVC (part of Rails).
376
416
  test_files: []
417
+
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 455d11505ca31532f8570b62dd5a8cb89ec6b6bd
4
- data.tar.gz: 3cbb9416fae50fc72fc400dd8b82842b055f0ec1
5
- SHA512:
6
- metadata.gz: e906230c1d7d55c88ae0e26cd5f9f0e20666bd6e19f93ce25bb51199081e7ebe4ee64b3e423e94eaf6c30429d876488d0a510fe44a6ff5f71275de0a0e8e485f
7
- data.tar.gz: c39d68a232d12ef7c6bbbe08166f3d92163c1e9eacc8e314ec1039a8c91f05ab8c252d3a7b7d5a273e3cf626219b64a9801b3ebc8f09fc0ddcb951a49f394710