actionpack 3.1.0 → 3.1.1.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 CHANGED
@@ -1,4 +1,32 @@
1
- *Rails 3.1.0 (unreleased)*
1
+ *Rails 3.1.1 (unreleased)*
2
+
3
+ * Allow asset tag helper methods to accept :digest => false option in order to completely avoid the digest generation.
4
+ Useful for linking assets from static html files or from emails when the user
5
+ could probably look at an older html email with an older asset. [Santiago Pastorino]
6
+
7
+ * Don't mount Sprockets server at config.assets.prefix if config.assets.compile is false. [Mark J. Titorenko]
8
+
9
+ * Set relative url root in assets when controller isn't available for Sprockets (eg. Sass files using asset_path). Fixes #2435 [Guillermo Iguaran]
10
+
11
+ * Fix basic auth credential generation to not make newlines. GH #2882
12
+
13
+ * Fixed the behavior of asset pipeline when config.assets.digest and config.assets.compile are false and requested asset isn't precompiled.
14
+ Before the requested asset were compiled anyway ignoring that the config.assets.compile flag is false. [Guillermo Iguaran]
15
+
16
+ * CookieJar is now Enumerable. Fixes #2795
17
+
18
+ * Fixed AssetNotPrecompiled error raised when rake assets:precompile is compiling certain .erb files. See GH #2763 #2765 #2805 [Guillermo Iguaran]
19
+
20
+ * Manifest is correctly placed in assets path when default assets prefix is changed. Fixes #2776 [Guillermo Iguaran]
21
+
22
+ * Fixed stylesheet_link_tag and javascript_include_tag to respect additional options passed by the users when debug is on. [Guillermo Iguaran]
23
+
24
+ * Fix ActiveRecord#exists? when passsed a nil value
25
+
26
+ * Fix assert_select_email to work on multipart and non-multipart emails as the method stopped working correctly in Rails 3.x due to changes in the new mail gem.
27
+
28
+
29
+ *Rails 3.1.0 (August 30, 2011)*
2
30
 
3
31
  * Param values are `paramified` in controller tests. [David Chelimsky]
4
32
 
@@ -145,7 +145,7 @@ module ActionController
145
145
  end
146
146
 
147
147
  def encode_credentials(user_name, password)
148
- "Basic #{ActiveSupport::Base64.encode64("#{user_name}:#{password}")}"
148
+ "Basic #{ActiveSupport::Base64.encode64s("#{user_name}:#{password}")}"
149
149
  end
150
150
 
151
151
  def authentication_request(controller, realm)
@@ -6,30 +6,30 @@ require 'active_support/core_ext/module/anonymous'
6
6
  require 'action_dispatch/http/mime_types'
7
7
 
8
8
  module ActionController
9
- # Wraps parameters hash into nested hash. This will allow client to submit
10
- # POST request without having to specify a root element in it.
9
+ # Wraps the parameters hash into a nested hash. This will allow clients to submit
10
+ # POST requests without having to specify any root elements.
11
11
  #
12
12
  # This functionality is enabled in +config/initializers/wrap_parameters.rb+
13
- # and can be customized. If you are upgrading to Rails 3.1, this file will
13
+ # and can be customized. If you are upgrading to \Rails 3.1, this file will
14
14
  # need to be created for the functionality to be enabled.
15
15
  #
16
16
  # You could also turn it on per controller by setting the format array to
17
- # non-empty array:
17
+ # a non-empty array:
18
18
  #
19
19
  # class UsersController < ApplicationController
20
20
  # wrap_parameters :format => [:json, :xml]
21
21
  # end
22
22
  #
23
- # If you enable +ParamsWrapper+ for +:json+ format. Instead of having to
23
+ # If you enable +ParamsWrapper+ for +:json+ format, instead of having to
24
24
  # send JSON parameters like this:
25
25
  #
26
26
  # {"user": {"name": "Konata"}}
27
27
  #
28
- # You can now just send a parameters like this:
28
+ # You can send parameters like this:
29
29
  #
30
30
  # {"name": "Konata"}
31
31
  #
32
- # And it will be wrapped into a nested hash with the key name matching
32
+ # And it will be wrapped into a nested hash with the key name matching the
33
33
  # controller's name. For example, if you're posting to +UsersController+,
34
34
  # your new +params+ hash will look like this:
35
35
  #
@@ -81,7 +81,7 @@ module ActionController
81
81
  #
82
82
  # ==== Examples
83
83
  # wrap_parameters :format => :xml
84
- # # enables the parmeter wrapper for XML format
84
+ # # enables the parameter wrapper for XML format
85
85
  #
86
86
  # wrap_parameters :person
87
87
  # # wraps parameters into +params[:person]+ hash
@@ -84,6 +84,7 @@ module ActionDispatch
84
84
  class CookieOverflow < StandardError; end
85
85
 
86
86
  class CookieJar #:nodoc:
87
+ include Enumerable
87
88
 
88
89
  # This regular expression is used to split the levels of a domain.
89
90
  # The top level domain can be any string without a period or
@@ -123,6 +124,10 @@ module ActionDispatch
123
124
  alias :closed? :closed
124
125
  def close!; @closed = true end
125
126
 
127
+ def each(&block)
128
+ @cookies.each(&block)
129
+ end
130
+
126
131
  # Returns the value of the cookie by +name+, or +nil+ if no such cookie exists.
127
132
  def [](name)
128
133
  @cookies[name.to_s]
@@ -1,5 +1,4 @@
1
1
  require "action_dispatch"
2
- require "rails"
3
2
 
4
3
  module ActionDispatch
5
4
  class Railtie < Rails::Railtie
@@ -458,7 +458,9 @@ module ActionDispatch
458
458
  prefix_options = options.slice(*_route.segment_keys)
459
459
  # we must actually delete prefix segment keys to avoid passing them to next url_for
460
460
  _route.segment_keys.each { |k| options.delete(k) }
461
- _routes.url_helpers.send("#{name}_path", prefix_options)
461
+ prefix = _routes.url_helpers.send("#{name}_path", prefix_options)
462
+ prefix = '' if prefix == '/'
463
+ prefix
462
464
  end
463
465
  end
464
466
  end
@@ -131,10 +131,14 @@ module ActionDispatch
131
131
  #
132
132
  # Examples:
133
133
  #
134
- # url_for :controller => 'tasks', :action => 'testing', :host => 'somehost.org', :port => '8080' # => 'http://somehost.org:8080/tasks/testing'
135
- # url_for :controller => 'tasks', :action => 'testing', :host => 'somehost.org', :anchor => 'ok', :only_path => true # => '/tasks/testing#ok'
136
- # url_for :controller => 'tasks', :action => 'testing', :trailing_slash => true # => 'http://somehost.org/tasks/testing/'
137
- # url_for :controller => 'tasks', :action => 'testing', :host => 'somehost.org', :number => '33' # => 'http://somehost.org/tasks/testing?number=33'
134
+ # url_for :controller => 'tasks', :action => 'testing', :host => 'somehost.org', :port => '8080'
135
+ # # => 'http://somehost.org:8080/tasks/testing'
136
+ # url_for :controller => 'tasks', :action => 'testing', :host => 'somehost.org', :anchor => 'ok', :only_path => true
137
+ # # => '/tasks/testing#ok'
138
+ # url_for :controller => 'tasks', :action => 'testing', :trailing_slash => true
139
+ # # => 'http://somehost.org/tasks/testing/'
140
+ # url_for :controller => 'tasks', :action => 'testing', :host => 'somehost.org', :number => '33'
141
+ # # => 'http://somehost.org/tasks/testing?number=33'
138
142
  def url_for(options = nil)
139
143
  case options
140
144
  when String
@@ -415,9 +415,9 @@ module ActionDispatch
415
415
  assert !deliveries.empty?, "No e-mail in delivery list"
416
416
 
417
417
  for delivery in deliveries
418
- for part in delivery.parts
418
+ for part in (delivery.parts.empty? ? [delivery] : delivery.parts)
419
419
  if part["Content-Type"].to_s =~ /^text\/html\W/
420
- root = HTML::Document.new(part.body).root
420
+ root = HTML::Document.new(part.body.to_s).root
421
421
  assert_select root, ":root", &block
422
422
  end
423
423
  end
@@ -2,8 +2,8 @@ module ActionPack
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 3
4
4
  MINOR = 1
5
- TINY = 0
6
- PRE = nil
5
+ TINY = 1
6
+ PRE = "rc1"
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join('.')
9
9
  end
@@ -21,14 +21,15 @@ module ActionView
21
21
  # When :relative (default), the protocol will be determined by the client using current protocol
22
22
  # When :request, the protocol will be the request protocol
23
23
  # Otherwise, the protocol is used (E.g. :http, :https, etc)
24
- def compute_public_path(source, dir, ext = nil, include_host = true, protocol = nil)
24
+ def compute_public_path(source, dir, options = {})
25
25
  source = source.to_s
26
26
  return source if is_uri?(source)
27
27
 
28
- source = rewrite_extension(source, dir, ext) if ext
29
- source = rewrite_asset_path(source, dir)
30
- source = rewrite_relative_url_root(source, relative_url_root) if has_request?
31
- source = rewrite_host_and_protocol(source, protocol) if include_host
28
+ options[:include_host] ||= true
29
+ source = rewrite_extension(source, dir, options[:ext]) if options[:ext]
30
+ source = rewrite_asset_path(source, dir, options)
31
+ source = rewrite_relative_url_root(source, relative_url_root)
32
+ source = rewrite_host_and_protocol(source, options[:protocol]) if options[:include_host]
32
33
  source
33
34
  end
34
35
 
@@ -119,10 +120,11 @@ module ActionView
119
120
  end
120
121
 
121
122
  def relative_url_root
122
- config = controller.config if controller.respond_to?(:config)
123
- config ||= config.action_controller if config.action_controller.present?
124
- config ||= config
125
- config.relative_url_root
123
+ if config.action_controller.present?
124
+ config.action_controller.relative_url_root
125
+ else
126
+ config.relative_url_root
127
+ end
126
128
  end
127
129
 
128
130
  def asset_host_config
@@ -60,8 +60,8 @@ module ActionView
60
60
 
61
61
  private
62
62
 
63
- def path_to_asset(source, include_host = true, protocol = nil)
64
- asset_paths.compute_public_path(source, asset_name.to_s.pluralize, extension, include_host, protocol)
63
+ def path_to_asset(source, options = {})
64
+ asset_paths.compute_public_path(source, asset_name.to_s.pluralize, options.merge(:ext => extension))
65
65
  end
66
66
 
67
67
  def path_to_asset_source(source)
@@ -41,7 +41,7 @@ module ActionView
41
41
 
42
42
  # Break out the asset path rewrite in case plugins wish to put the asset id
43
43
  # someplace other than the query string.
44
- def rewrite_asset_path(source, dir)
44
+ def rewrite_asset_path(source, dir, options = nil)
45
45
  source = "/#{dir}/#{source}" unless source[0] == ?/
46
46
  path = config.asset_path
47
47
 
@@ -83,7 +83,7 @@ module ActionView
83
83
  # javascript_path "http://www.example.com/js/xmlhr" # => http://www.example.com/js/xmlhr
84
84
  # javascript_path "http://www.example.com/js/xmlhr.js" # => http://www.example.com/js/xmlhr.js
85
85
  def javascript_path(source)
86
- asset_paths.compute_public_path(source, 'javascripts', 'js')
86
+ asset_paths.compute_public_path(source, 'javascripts', :ext => 'js')
87
87
  end
88
88
  alias_method :path_to_javascript, :javascript_path # aliased to avoid conflicts with a javascript_path named route
89
89
 
@@ -17,7 +17,7 @@ module ActionView
17
17
 
18
18
  def asset_tag(source, options)
19
19
  # We force the :request protocol here to avoid a double-download bug in IE7 and IE8
20
- tag("link", { "rel" => "stylesheet", "type" => Mime::CSS, "media" => "screen", "href" => ERB::Util.html_escape(path_to_asset(source, true, :request)) }.merge(options), false, false)
20
+ tag("link", { "rel" => "stylesheet", "type" => Mime::CSS, "media" => "screen", "href" => ERB::Util.html_escape(path_to_asset(source, :protocol => :request)) }.merge(options), false, false)
21
21
  end
22
22
 
23
23
  def custom_dir
@@ -61,7 +61,7 @@ module ActionView
61
61
  # stylesheet_path "http://www.example.com/css/style" # => http://www.example.com/css/style
62
62
  # stylesheet_path "http://www.example.com/css/style.css" # => http://www.example.com/css/style.css
63
63
  def stylesheet_path(source)
64
- asset_paths.compute_public_path(source, 'stylesheets', 'css', true, :request)
64
+ asset_paths.compute_public_path(source, 'stylesheets', :ext => 'css', :protocol => :request)
65
65
  end
66
66
  alias_method :path_to_stylesheet, :stylesheet_path # aliased to avoid conflicts with a stylesheet_path named route
67
67
 
@@ -134,9 +134,9 @@ module ActionView
134
134
  # WARNING: content_for is ignored in caches. So you shouldn't use it
135
135
  # for elements that will be fragment cached.
136
136
  def content_for(name, content = nil, &block)
137
- content = capture(&block) if block_given?
138
- if content
139
- @view_flow.append(name, content)
137
+ if content || block_given?
138
+ content = capture(&block) if block_given?
139
+ @view_flow.append(name, content) if content
140
140
  nil
141
141
  else
142
142
  @view_flow.get(name)
@@ -9,12 +9,16 @@ namespace :assets do
9
9
  Kernel.exec $0, *ARGV
10
10
  else
11
11
  Rake::Task["environment"].invoke
12
+ Rake::Task["tmp:cache:clear"].invoke
12
13
 
13
14
  # Ensure that action view is loaded and the appropriate sprockets hooks get executed
14
15
  ActionView::Base
15
16
 
16
- # Always perform caching so that asset_path appends the timestamps to file references.
17
- Rails.application.config.action_controller.perform_caching = true
17
+ # Always compile files
18
+ Rails.application.config.assets.compile = true
19
+
20
+ # Always ignore asset host
21
+ Rails.application.config.action_controller.asset_host = nil
18
22
 
19
23
  config = Rails.application.config
20
24
  env = Rails.application.assets
@@ -22,32 +26,29 @@ namespace :assets do
22
26
  manifest = {}
23
27
  manifest_path = config.assets.manifest || target
24
28
 
25
- if env.respond_to?(:each_logical_path)
26
- config.assets.precompile.each do |path|
27
- env.each_logical_path do |logical_path|
28
- if path.is_a?(Regexp)
29
- next unless path.match(logical_path)
30
- else
31
- next unless File.fnmatch(path.to_s, logical_path)
32
- end
33
-
34
- if asset = env.find_asset(logical_path)
35
- manifest[logical_path] = asset.digest_path
36
- filename = target.join(asset.digest_path)
37
- mkdir_p filename.dirname
38
- asset.write_to(filename)
39
- asset.write_to("#{filename}.gz") if filename.to_s =~ /\.(css|js)$/
40
- end
29
+ config.assets.precompile.each do |path|
30
+ env.each_logical_path do |logical_path|
31
+ if path.is_a?(Regexp)
32
+ next unless path.match(logical_path)
33
+ elsif path.is_a?(Proc)
34
+ next unless path.call(logical_path)
35
+ else
36
+ next unless File.fnmatch(path.to_s, logical_path)
37
+ end
38
+
39
+ if asset = env.find_asset(logical_path)
40
+ asset_path = config.assets.digest ? asset.digest_path : logical_path
41
+ manifest[logical_path] = asset_path
42
+ filename = target.join(asset_path)
43
+
44
+ mkdir_p filename.dirname
45
+ asset.write_to(filename)
46
+ asset.write_to("#{filename}.gz") if filename.to_s =~ /\.(css|js)$/
41
47
  end
42
48
  end
43
- else
44
- # TODO: Remove this once we're depending on sprockets beta 15
45
- assets = config.assets.precompile.dup
46
- assets << {:to => target}
47
- env.precompile(*assets)
48
49
  end
49
50
 
50
- File.open("#{manifest_path}/manifest.yml", 'w') do |f|
51
+ File.open("#{manifest_path}/manifest.yml", 'wb') do |f|
51
52
  YAML.dump(manifest, f)
52
53
  end
53
54
  end
@@ -15,6 +15,8 @@ module Sprockets
15
15
  paths.asset_environment = asset_environment
16
16
  paths.asset_prefix = asset_prefix
17
17
  paths.asset_digests = asset_digests
18
+ paths.compile_assets = compile_assets?
19
+ paths.digest_assets = digest_assets?
18
20
  paths
19
21
  end
20
22
  end
@@ -23,57 +25,46 @@ module Sprockets
23
25
  options = sources.extract_options!
24
26
  debug = options.key?(:debug) ? options.delete(:debug) : debug_assets?
25
27
  body = options.key?(:body) ? options.delete(:body) : false
28
+ digest = options.key?(:digest) ? options.delete(:digest) : digest_assets?
26
29
 
27
30
  sources.collect do |source|
28
31
  if debug && asset = asset_paths.asset_for(source, 'js')
29
32
  asset.to_a.map { |dep|
30
- javascript_include_tag(dep, :debug => false, :body => true)
31
- }.join("\n").html_safe
33
+ super(dep.to_s, { :src => asset_path(dep, :ext => 'js', :body => true, :digest => digest) }.merge!(options))
34
+ }
32
35
  else
33
- tag_options = {
34
- 'type' => "text/javascript",
35
- 'src' => asset_path(source, 'js', body)
36
- }.merge(options.stringify_keys)
37
-
38
- content_tag 'script', "", tag_options
36
+ super(source.to_s, { :src => asset_path(source, :ext => 'js', :body => body, :digest => digest) }.merge!(options))
39
37
  end
40
38
  end.join("\n").html_safe
41
39
  end
42
40
 
43
41
  def stylesheet_link_tag(*sources)
44
42
  options = sources.extract_options!
45
- debug = options.key?(:debug) ? options.delete(:debug) : debug_assets?
46
- body = options.key?(:body) ? options.delete(:body) : false
47
- media = options.key?(:media) ? options.delete(:media) : "screen"
43
+ debug = options.key?(:debug) ? options.delete(:debug) : debug_assets?
44
+ body = options.key?(:body) ? options.delete(:body) : false
45
+ digest = options.key?(:digest) ? options.delete(:digest) : digest_assets?
48
46
 
49
47
  sources.collect do |source|
50
48
  if debug && asset = asset_paths.asset_for(source, 'css')
51
49
  asset.to_a.map { |dep|
52
- stylesheet_link_tag(dep, :media => media, :debug => false, :body => true)
53
- }.join("\n").html_safe
50
+ super(dep.to_s, { :href => asset_path(dep, :ext => 'css', :body => true, :protocol => :request, :digest => digest) }.merge!(options))
51
+ }
54
52
  else
55
- tag_options = {
56
- 'rel' => "stylesheet",
57
- 'type' => "text/css",
58
- 'media' => media,
59
- 'href' => asset_path(source, 'css', body, :request)
60
- }.merge(options.stringify_keys)
61
-
62
- tag 'link', tag_options
53
+ super(source.to_s, { :href => asset_path(source, :ext => 'css', :body => body, :protocol => :request, :digest => digest) }.merge!(options))
63
54
  end
64
55
  end.join("\n").html_safe
65
56
  end
66
57
 
67
- def asset_path(source, default_ext = nil, body = false, protocol = nil)
58
+ def asset_path(source, options = {})
68
59
  source = source.logical_path if source.respond_to?(:logical_path)
69
- path = asset_paths.compute_public_path(source, 'assets', default_ext, true, protocol)
70
- body ? "#{path}?body=1" : path
60
+ path = asset_paths.compute_public_path(source, 'assets', options.merge(:body => true))
61
+ options[:body] ? "#{path}?body=1" : path
71
62
  end
72
63
 
73
64
  private
74
65
  def debug_assets?
75
66
  begin
76
- Rails.application.config.assets.compile &&
67
+ compile_assets? &&
77
68
  (Rails.application.config.assets.debug ||
78
69
  params[:debug_assets] == '1' ||
79
70
  params[:debug_assets] == 'true')
@@ -96,6 +87,14 @@ module Sprockets
96
87
  Rails.application.config.assets.digests
97
88
  end
98
89
 
90
+ def compile_assets?
91
+ Rails.application.config.assets.compile
92
+ end
93
+
94
+ def digest_assets?
95
+ Rails.application.config.assets.digest
96
+ end
97
+
99
98
  # Override to specify an alternative asset environment for asset
100
99
  # path generation. The environment should already have been mounted
101
100
  # at the prefix returned by +asset_prefix+.
@@ -104,12 +103,12 @@ module Sprockets
104
103
  end
105
104
 
106
105
  class AssetPaths < ::ActionView::AssetPaths #:nodoc:
107
- attr_accessor :asset_environment, :asset_prefix, :asset_digests
106
+ attr_accessor :asset_environment, :asset_prefix, :asset_digests, :compile_assets, :digest_assets
108
107
 
109
108
  class AssetNotPrecompiledError < StandardError; end
110
109
 
111
- def compute_public_path(source, dir, ext=nil, include_host=true, protocol=nil)
112
- super(source, asset_prefix, ext, include_host, protocol)
110
+ def compute_public_path(source, dir, options = {})
111
+ super(source, asset_prefix, options)
113
112
  end
114
113
 
115
114
  # Return the filesystem path for the source
@@ -129,8 +128,8 @@ module Sprockets
129
128
  return digest
130
129
  end
131
130
 
132
- if Rails.application.config.assets.compile
133
- if asset = asset_environment[logical_path]
131
+ if compile_assets
132
+ if digest_assets && asset = asset_environment[logical_path]
134
133
  return asset.digest_path
135
134
  end
136
135
  return logical_path
@@ -139,11 +138,11 @@ module Sprockets
139
138
  end
140
139
  end
141
140
 
142
- def rewrite_asset_path(source, dir)
141
+ def rewrite_asset_path(source, dir, options = {})
143
142
  if source[0] == ?/
144
143
  source
145
144
  else
146
- source = digest_for(source) if Rails.application.config.assets.digest
145
+ source = digest_for(source) unless options[:digest] == false
147
146
  source = File.join(dir, source)
148
147
  source = "/#{source}" unless source =~ /^\//
149
148
  source
@@ -67,11 +67,13 @@ module Sprockets
67
67
  end
68
68
  end
69
69
 
70
- app.routes.prepend do
71
- mount app.assets => config.assets.prefix
70
+ if config.assets.compile
71
+ app.routes.prepend do
72
+ mount app.assets => config.assets.prefix
73
+ end
72
74
  end
73
75
 
74
- if config.action_controller.perform_caching
76
+ if config.assets.digest
75
77
  app.assets = app.assets.index
76
78
  end
77
79
  end
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: actionpack
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
5
- prerelease:
4
+ hash: 977940594
5
+ prerelease: true
6
6
  segments:
7
7
  - 3
8
8
  - 1
9
- - 0
10
- version: 3.1.0
9
+ - 1
10
+ - rc1
11
+ version: 3.1.1.rc1
11
12
  platform: ruby
12
13
  authors:
13
14
  - David Heinemeier Hansson
@@ -15,7 +16,8 @@ autorequire:
15
16
  bindir: bin
16
17
  cert_chain: []
17
18
 
18
- date: 2011-08-31 00:00:00 Z
19
+ date: 2011-09-14 00:00:00 -07:00
20
+ default_executable:
19
21
  dependencies:
20
22
  - !ruby/object:Gem::Dependency
21
23
  name: activesupport
@@ -25,12 +27,13 @@ dependencies:
25
27
  requirements:
26
28
  - - "="
27
29
  - !ruby/object:Gem::Version
28
- hash: 3
30
+ hash: 977940594
29
31
  segments:
30
32
  - 3
31
33
  - 1
32
- - 0
33
- version: 3.1.0
34
+ - 1
35
+ - rc1
36
+ version: 3.1.1.rc1
34
37
  type: :runtime
35
38
  version_requirements: *id001
36
39
  - !ruby/object:Gem::Dependency
@@ -41,12 +44,13 @@ dependencies:
41
44
  requirements:
42
45
  - - "="
43
46
  - !ruby/object:Gem::Version
44
- hash: 3
47
+ hash: 977940594
45
48
  segments:
46
49
  - 3
47
50
  - 1
48
- - 0
49
- version: 3.1.0
51
+ - 1
52
+ - rc1
53
+ version: 3.1.1.rc1
50
54
  type: :runtime
51
55
  version_requirements: *id002
52
56
  - !ruby/object:Gem::Dependency
@@ -386,6 +390,7 @@ files:
386
390
  - lib/sprockets/helpers/rails_helper.rb
387
391
  - lib/sprockets/helpers.rb
388
392
  - lib/sprockets/railtie.rb
393
+ has_rdoc: true
389
394
  homepage: http://www.rubyonrails.org
390
395
  licenses: []
391
396
 
@@ -408,16 +413,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
408
413
  required_rubygems_version: !ruby/object:Gem::Requirement
409
414
  none: false
410
415
  requirements:
411
- - - ">="
416
+ - - ">"
412
417
  - !ruby/object:Gem::Version
413
- hash: 3
418
+ hash: 25
414
419
  segments:
415
- - 0
416
- version: "0"
420
+ - 1
421
+ - 3
422
+ - 1
423
+ version: 1.3.1
417
424
  requirements:
418
425
  - none
419
426
  rubyforge_project:
420
- rubygems_version: 1.8.8
427
+ rubygems_version: 1.3.7
421
428
  signing_key:
422
429
  specification_version: 3
423
430
  summary: Web-flow and rendering framework putting the VC in MVC (part of Rails).