railties 5.0.7.2 → 5.1.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (197) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +77 -567
  3. data/MIT-LICENSE +1 -1
  4. data/RDOC_MAIN.rdoc +3 -3
  5. data/README.rdoc +1 -1
  6. data/exe/rails +2 -2
  7. data/lib/rails.rb +18 -18
  8. data/lib/rails/all.rb +1 -1
  9. data/lib/rails/api/generator.rb +28 -0
  10. data/lib/rails/api/task.rb +54 -42
  11. data/lib/rails/app_loader.rb +9 -9
  12. data/lib/rails/application.rb +30 -35
  13. data/lib/rails/application/bootstrap.rb +13 -7
  14. data/lib/rails/application/configuration.rb +30 -53
  15. data/lib/rails/application/default_middleware_stack.rb +3 -5
  16. data/lib/rails/application/finisher.rb +16 -7
  17. data/lib/rails/application/routes_reloader.rb +16 -1
  18. data/lib/rails/application_controller.rb +10 -10
  19. data/lib/rails/backtrace_cleaner.rb +5 -5
  20. data/lib/rails/cli.rb +7 -5
  21. data/lib/rails/code_statistics.rb +16 -17
  22. data/lib/rails/code_statistics_calculator.rb +3 -3
  23. data/lib/rails/command.rb +111 -0
  24. data/lib/rails/command/actions.rb +42 -0
  25. data/lib/rails/command/base.rb +149 -0
  26. data/lib/rails/command/behavior.rb +123 -0
  27. data/lib/rails/command/environment_argument.rb +34 -0
  28. data/lib/rails/commands.rb +2 -4
  29. data/lib/rails/commands/application/application_command.rb +29 -0
  30. data/lib/rails/commands/console/console_command.rb +89 -0
  31. data/lib/rails/commands/dbconsole/dbconsole_command.rb +155 -0
  32. data/lib/rails/commands/destroy/destroy_command.rb +21 -0
  33. data/lib/rails/commands/generate/generate_command.rb +23 -0
  34. data/lib/rails/commands/help/USAGE +15 -0
  35. data/lib/rails/commands/help/help_command.rb +13 -0
  36. data/lib/rails/commands/new/new_command.rb +15 -0
  37. data/lib/rails/commands/plugin/plugin_command.rb +43 -0
  38. data/lib/rails/commands/rake/rake_command.rb +49 -0
  39. data/lib/rails/commands/runner/USAGE +17 -0
  40. data/lib/rails/commands/runner/runner_command.rb +46 -0
  41. data/lib/rails/commands/secrets/USAGE +52 -0
  42. data/lib/rails/commands/secrets/secrets_command.rb +36 -0
  43. data/lib/rails/commands/server/server_command.rb +177 -0
  44. data/lib/rails/commands/test/test_command.rb +20 -0
  45. data/lib/rails/commands/version/version_command.rb +9 -0
  46. data/lib/rails/configuration.rb +7 -7
  47. data/lib/rails/console/app.rb +4 -4
  48. data/lib/rails/dev_caching.rb +8 -8
  49. data/lib/rails/engine.rb +62 -63
  50. data/lib/rails/engine/commands.rb +6 -13
  51. data/lib/rails/engine/configuration.rb +2 -2
  52. data/lib/rails/gem_version.rb +3 -3
  53. data/lib/rails/generators.rb +229 -313
  54. data/lib/rails/generators/actions.rb +20 -21
  55. data/lib/rails/generators/actions/create_migration.rb +24 -25
  56. data/lib/rails/generators/active_model.rb +3 -3
  57. data/lib/rails/generators/app_base.rb +123 -93
  58. data/lib/rails/generators/base.rb +32 -33
  59. data/lib/rails/generators/css/assets/assets_generator.rb +1 -1
  60. data/lib/rails/generators/erb.rb +14 -14
  61. data/lib/rails/generators/erb/controller/controller_generator.rb +1 -1
  62. data/lib/rails/generators/erb/mailer/mailer_generator.rb +12 -12
  63. data/lib/rails/generators/erb/scaffold/scaffold_generator.rb +3 -3
  64. data/lib/rails/generators/generated_attribute.rb +27 -27
  65. data/lib/rails/generators/js/assets/assets_generator.rb +1 -1
  66. data/lib/rails/generators/migration.rb +8 -8
  67. data/lib/rails/generators/model_helpers.rb +2 -2
  68. data/lib/rails/generators/named_base.rb +56 -56
  69. data/lib/rails/generators/rails/app/app_generator.rb +98 -81
  70. data/lib/rails/generators/rails/app/templates/Gemfile +7 -2
  71. data/lib/rails/generators/rails/app/templates/app/assets/config/manifest.js.tt +0 -2
  72. data/lib/rails/generators/rails/app/templates/app/assets/javascripts/application.js.tt +6 -4
  73. data/lib/rails/generators/rails/app/templates/app/assets/javascripts/cable.js +1 -1
  74. data/lib/rails/generators/rails/app/templates/app/assets/stylesheets/application.css +2 -2
  75. data/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +1 -1
  76. data/lib/rails/generators/rails/app/templates/bin/{setup → setup.tt} +6 -0
  77. data/lib/rails/generators/rails/app/templates/bin/{update → update.tt} +2 -1
  78. data/lib/rails/generators/rails/app/templates/bin/yarn +9 -0
  79. data/lib/rails/generators/rails/app/templates/config/cable.yml +1 -0
  80. data/lib/rails/generators/rails/app/templates/config/databases/frontbase.yml +1 -0
  81. data/lib/rails/generators/rails/app/templates/config/databases/ibm_db.yml +1 -0
  82. data/lib/rails/generators/rails/app/templates/config/databases/jdbc.yml +1 -0
  83. data/lib/rails/generators/rails/app/templates/config/databases/jdbcmysql.yml +2 -1
  84. data/lib/rails/generators/rails/app/templates/config/databases/jdbcpostgresql.yml +1 -0
  85. data/lib/rails/generators/rails/app/templates/config/databases/jdbcsqlite3.yml +1 -0
  86. data/lib/rails/generators/rails/app/templates/config/databases/mysql.yml +2 -2
  87. data/lib/rails/generators/rails/app/templates/config/databases/oracle.yml +1 -0
  88. data/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml +1 -1
  89. data/lib/rails/generators/rails/app/templates/config/databases/sqlite3.yml +1 -1
  90. data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +1 -1
  91. data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +10 -1
  92. data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +1 -1
  93. data/lib/rails/generators/rails/app/templates/config/initializers/application_controller_renderer.rb +4 -6
  94. data/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt +8 -3
  95. data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults.rb.tt +6 -5
  96. data/lib/rails/generators/rails/app/templates/config/locales/en.yml +10 -0
  97. data/lib/rails/generators/rails/app/templates/config/puma.rb +16 -7
  98. data/lib/rails/generators/rails/app/templates/config/secrets.yml +12 -2
  99. data/lib/rails/generators/rails/app/templates/gitignore +5 -1
  100. data/lib/rails/generators/rails/app/templates/package.json +5 -0
  101. data/lib/rails/generators/rails/app/templates/public/404.html +6 -6
  102. data/lib/rails/generators/rails/app/templates/public/422.html +6 -6
  103. data/lib/rails/generators/rails/app/templates/public/500.html +6 -6
  104. data/lib/rails/generators/rails/app/templates/public/robots.txt +0 -4
  105. data/lib/rails/generators/rails/app/templates/test/application_system_test_case.rb +5 -0
  106. data/lib/rails/generators/rails/app/templates/test/test_helper.rb +0 -1
  107. data/lib/rails/generators/rails/assets/assets_generator.rb +10 -10
  108. data/lib/rails/generators/rails/controller/controller_generator.rb +15 -12
  109. data/lib/rails/generators/rails/encrypted_secrets/encrypted_secrets_generator.rb +66 -0
  110. data/lib/rails/generators/rails/encrypted_secrets/templates/config/secrets.yml.enc +3 -0
  111. data/lib/rails/generators/rails/generator/generator_generator.rb +2 -3
  112. data/lib/rails/generators/rails/helper/helper_generator.rb +1 -1
  113. data/lib/rails/generators/rails/model/model_generator.rb +1 -1
  114. data/lib/rails/generators/rails/plugin/plugin_generator.rb +21 -26
  115. data/lib/rails/generators/rails/plugin/templates/bin/rails.tt +1 -0
  116. data/lib/rails/generators/rails/plugin/templates/bin/test.tt +3 -9
  117. data/lib/rails/generators/rails/plugin/templates/test/application_system_test_case.rb +5 -0
  118. data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb +0 -3
  119. data/lib/rails/generators/rails/resource/resource_generator.rb +2 -2
  120. data/lib/rails/generators/rails/scaffold/scaffold_generator.rb +5 -1
  121. data/lib/rails/generators/rails/scaffold/templates/scaffold.css +4 -8
  122. data/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +2 -3
  123. data/lib/rails/generators/rails/system_test/USAGE +10 -0
  124. data/lib/rails/generators/rails/system_test/system_test_generator.rb +7 -0
  125. data/lib/rails/generators/rails/task/task_generator.rb +1 -2
  126. data/lib/rails/generators/resource_helpers.rb +13 -10
  127. data/lib/rails/generators/test_case.rb +5 -6
  128. data/lib/rails/generators/test_unit.rb +1 -1
  129. data/lib/rails/generators/test_unit/controller/controller_generator.rb +3 -3
  130. data/lib/rails/generators/test_unit/generator/generator_generator.rb +3 -3
  131. data/lib/rails/generators/test_unit/helper/helper_generator.rb +1 -1
  132. data/lib/rails/generators/test_unit/integration/integration_generator.rb +2 -2
  133. data/lib/rails/generators/test_unit/job/job_generator.rb +3 -3
  134. data/lib/rails/generators/test_unit/mailer/mailer_generator.rb +5 -5
  135. data/lib/rails/generators/test_unit/model/model_generator.rb +3 -4
  136. data/lib/rails/generators/test_unit/plugin/plugin_generator.rb +2 -2
  137. data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +3 -3
  138. data/lib/rails/generators/test_unit/system/system_generator.rb +17 -0
  139. data/lib/rails/generators/test_unit/system/templates/application_system_test_case.rb +5 -0
  140. data/lib/rails/generators/test_unit/system/templates/system_test.rb +9 -0
  141. data/lib/rails/generators/testing/assertions.rb +4 -4
  142. data/lib/rails/generators/testing/behaviour.rb +20 -21
  143. data/lib/rails/info.rb +20 -20
  144. data/lib/rails/info_controller.rb +15 -15
  145. data/lib/rails/initializable.rb +6 -2
  146. data/lib/rails/mailers_controller.rb +11 -11
  147. data/lib/rails/paths.rb +4 -5
  148. data/lib/rails/plugin/test.rb +7 -0
  149. data/lib/rails/rack/logger.rb +44 -46
  150. data/lib/rails/railtie.rb +41 -38
  151. data/lib/rails/railtie/configurable.rb +6 -6
  152. data/lib/rails/railtie/configuration.rb +1 -1
  153. data/lib/rails/ruby_version_check.rb +1 -1
  154. data/lib/rails/secrets.rb +111 -0
  155. data/lib/rails/source_annotation_extractor.rb +15 -9
  156. data/lib/rails/tasks.rb +3 -2
  157. data/lib/rails/tasks/annotations.rake +3 -3
  158. data/lib/rails/tasks/dev.rake +2 -2
  159. data/lib/rails/tasks/engine.rake +4 -4
  160. data/lib/rails/tasks/framework.rake +4 -18
  161. data/lib/rails/tasks/initializers.rake +1 -1
  162. data/lib/rails/tasks/log.rake +14 -10
  163. data/lib/rails/tasks/middleware.rake +1 -1
  164. data/lib/rails/tasks/misc.rake +10 -10
  165. data/lib/rails/tasks/restart.rake +4 -4
  166. data/lib/rails/tasks/routes.rake +3 -12
  167. data/lib/rails/tasks/statistics.rake +3 -3
  168. data/lib/rails/tasks/tmp.rake +7 -7
  169. data/lib/rails/tasks/yarn.rake +11 -0
  170. data/lib/rails/templates/rails/mailers/email.html.erb +4 -1
  171. data/lib/rails/test_help.rb +28 -10
  172. data/lib/rails/test_unit/line_filtering.rb +69 -3
  173. data/lib/rails/test_unit/minitest_plugin.rb +139 -0
  174. data/lib/rails/test_unit/railtie.rb +2 -1
  175. data/lib/rails/test_unit/reporter.rb +3 -8
  176. data/lib/rails/test_unit/test_requirer.rb +28 -0
  177. data/lib/rails/test_unit/testing.rake +19 -14
  178. data/lib/rails/version.rb +1 -1
  179. data/lib/rails/welcome_controller.rb +1 -1
  180. metadata +53 -30
  181. data/lib/minitest/rails_plugin.rb +0 -49
  182. data/lib/rails/commands/application.rb +0 -17
  183. data/lib/rails/commands/commands_tasks.rb +0 -180
  184. data/lib/rails/commands/console.rb +0 -68
  185. data/lib/rails/commands/console_helper.rb +0 -34
  186. data/lib/rails/commands/dbconsole.rb +0 -173
  187. data/lib/rails/commands/destroy.rb +0 -11
  188. data/lib/rails/commands/generate.rb +0 -13
  189. data/lib/rails/commands/plugin.rb +0 -23
  190. data/lib/rails/commands/rake_proxy.rb +0 -41
  191. data/lib/rails/commands/runner.rb +0 -71
  192. data/lib/rails/commands/server.rb +0 -163
  193. data/lib/rails/commands/test.rb +0 -10
  194. data/lib/rails/engine/commands_tasks.rb +0 -118
  195. data/lib/rails/generators/rails/app/templates/config/initializers/session_store.rb.tt +0 -3
  196. data/lib/rails/rack/debugger.rb +0 -3
  197. data/lib/rails/test_unit/runner.rb +0 -141
@@ -1,7 +1,8 @@
1
- require 'fileutils'
2
- require 'active_support/notifications'
3
- require 'active_support/dependencies'
4
- require 'active_support/descendants_tracker'
1
+ require "fileutils"
2
+ require "active_support/notifications"
3
+ require "active_support/dependencies"
4
+ require "active_support/descendants_tracker"
5
+ require "rails/secrets"
5
6
 
6
7
  module Rails
7
8
  class Application
@@ -36,7 +37,7 @@ INFO
36
37
  FileUtils.mkdir_p File.dirname path
37
38
  end
38
39
 
39
- f = File.open path, 'a'
40
+ f = File.open path, "a"
40
41
  f.binmode
41
42
  f.sync = config.autoflush_log # if true make sure every write flushes
42
43
 
@@ -48,8 +49,8 @@ INFO
48
49
  logger = ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new(STDERR))
49
50
  logger.level = ActiveSupport::Logger::WARN
50
51
  logger.warn(
51
- "Rails Error: Unable to access log file. Please ensure that #{path} exists and is writable " +
52
- "(ie, make it writable for user and group: chmod 0664 #{path}). " +
52
+ "Rails Error: Unable to access log file. Please ensure that #{path} exists and is writable " \
53
+ "(ie, make it writable for user and group: chmod 0664 #{path}). " \
53
54
  "The log level has been raised to WARN and the output directed to STDERR until the problem is fixed."
54
55
  )
55
56
  logger
@@ -77,6 +78,11 @@ INFO
77
78
  initializer :bootstrap_hook, group: :all do |app|
78
79
  ActiveSupport.run_load_hooks(:before_initialize, app)
79
80
  end
81
+
82
+ initializer :set_secrets_root, group: :all do
83
+ Rails::Secrets.root = root
84
+ Rails::Secrets.read_encrypted_secrets = config.read_encrypted_secrets
85
+ end
80
86
  end
81
87
  end
82
88
  end
@@ -1,10 +1,7 @@
1
- require 'active_support/core_ext/kernel/reporting'
2
- require 'active_support/file_update_checker'
3
- require 'rails/engine/configuration'
4
- require 'rails/source_annotation_extractor'
5
-
6
- require 'active_support/deprecation'
7
- require 'active_support/core_ext/string/strip' # for strip_heredoc
1
+ require "active_support/core_ext/kernel/reporting"
2
+ require "active_support/file_update_checker"
3
+ require "rails/engine/configuration"
4
+ require "rails/source_annotation_extractor"
8
5
 
9
6
  module Rails
10
7
  class Application
@@ -16,14 +13,15 @@ module Rails
16
13
  :railties_order, :relative_url_root, :secret_key_base, :secret_token,
17
14
  :ssl_options, :public_file_server,
18
15
  :session_options, :time_zone, :reload_classes_only_on_change,
19
- :beginning_of_week, :filter_redirect, :x, :enable_dependency_loading
16
+ :beginning_of_week, :filter_redirect, :x, :enable_dependency_loading,
17
+ :read_encrypted_secrets
20
18
 
21
19
  attr_writer :log_level
22
- attr_reader :encoding, :api_only, :static_cache_control
20
+ attr_reader :encoding, :api_only
23
21
 
24
22
  def initialize(*)
25
23
  super
26
- self.encoding = "utf-8"
24
+ self.encoding = Encoding::UTF_8
27
25
  @allow_concurrency = nil
28
26
  @consider_all_requests_local = false
29
27
  @filter_parameters = []
@@ -34,8 +32,7 @@ module Rails
34
32
  @public_file_server.index_name = "index"
35
33
  @force_ssl = false
36
34
  @ssl_options = {}
37
- @session_store = :cookie_store
38
- @session_options = {}
35
+ @session_store = nil
39
36
  @time_zone = "UTC"
40
37
  @beginning_of_week = :monday
41
38
  @log_level = nil
@@ -55,35 +52,7 @@ module Rails
55
52
  @debug_exception_response_format = nil
56
53
  @x = Custom.new
57
54
  @enable_dependency_loading = false
58
- end
59
-
60
- def static_cache_control=(value)
61
- ActiveSupport::Deprecation.warn <<-eow.strip_heredoc
62
- `config.static_cache_control` is deprecated and will be removed in Rails 5.1.
63
- Please use
64
- `config.public_file_server.headers = { 'Cache-Control' => '#{value}' }`
65
- instead.
66
- eow
67
-
68
- @static_cache_control = value
69
- end
70
-
71
- def serve_static_files
72
- ActiveSupport::Deprecation.warn <<-eow.strip_heredoc
73
- `config.serve_static_files` is deprecated and will be removed in Rails 5.1.
74
- Please use `config.public_file_server.enabled` instead.
75
- eow
76
-
77
- @public_file_server.enabled
78
- end
79
-
80
- def serve_static_files=(value)
81
- ActiveSupport::Deprecation.warn <<-eow.strip_heredoc
82
- `config.serve_static_files` is deprecated and will be removed in Rails 5.1.
83
- Please use `config.public_file_server.enabled = #{value}` instead.
84
- eow
85
-
86
- @public_file_server.enabled = value
55
+ @read_encrypted_secrets = false
87
56
  end
88
57
 
89
58
  def encoding=(value)
@@ -113,7 +82,7 @@ module Rails
113
82
  @paths ||= begin
114
83
  paths = super
115
84
  paths.add "config/database", with: "config/database.yml"
116
- paths.add "config/secrets", with: "config/secrets.yml"
85
+ paths.add "config/secrets", with: "config", glob: "secrets.yml{,.enc}"
117
86
  paths.add "config/environment", with: "config/environment.rb"
118
87
  paths.add "lib/templates"
119
88
  paths.add "log", with: "log/#{Rails.env}.log"
@@ -135,7 +104,7 @@ module Rails
135
104
  require "yaml"
136
105
  require "erb"
137
106
  YAML.load(ERB.new(yaml.read).result) || {}
138
- elsif ENV['DATABASE_URL']
107
+ elsif ENV["DATABASE_URL"]
139
108
  # Value from ENV['DATABASE_URL'] is set to default database connection
140
109
  # by Active Record.
141
110
  {}
@@ -162,32 +131,40 @@ module Rails
162
131
 
163
132
  def colorize_logging=(val)
164
133
  ActiveSupport::LogSubscriber.colorize_logging = val
165
- self.generators.colorize_logging = val
134
+ generators.colorize_logging = val
166
135
  end
167
136
 
168
- def session_store(*args)
169
- if args.empty?
170
- case @session_store
171
- when :disabled
172
- nil
173
- when :active_record_store
137
+ def session_store(new_session_store = nil, **options)
138
+ if new_session_store
139
+ if new_session_store == :active_record_store
174
140
  begin
175
141
  ActionDispatch::Session::ActiveRecordStore
176
142
  rescue NameError
177
143
  raise "`ActiveRecord::SessionStore` is extracted out of Rails into a gem. " \
178
144
  "Please add `activerecord-session_store` to your Gemfile to use it."
179
145
  end
146
+ end
147
+
148
+ @session_store = new_session_store
149
+ @session_options = options || {}
150
+ else
151
+ case @session_store
152
+ when :disabled
153
+ nil
154
+ when :active_record_store
155
+ ActionDispatch::Session::ActiveRecordStore
180
156
  when Symbol
181
157
  ActionDispatch::Session.const_get(@session_store.to_s.camelize)
182
158
  else
183
159
  @session_store
184
160
  end
185
- else
186
- @session_store = args.shift
187
- @session_options = args.shift || {}
188
161
  end
189
162
  end
190
163
 
164
+ def session_store? #:nodoc:
165
+ @session_store
166
+ end
167
+
191
168
  def annotations
192
169
  SourceAnnotationExtractor::Annotation
193
170
  end
@@ -19,7 +19,6 @@ module Rails
19
19
 
20
20
  if config.public_file_server.enabled
21
21
  headers = config.public_file_server.headers || {}
22
- headers['Cache-Control'.freeze] = config.static_cache_control if config.static_cache_control
23
22
 
24
23
  middleware.use ::ActionDispatch::Static, paths["public"].first, index: config.public_file_server.index_name, headers: headers
25
24
  end
@@ -41,12 +40,11 @@ module Rails
41
40
  middleware.use ::Rack::Runtime
42
41
  middleware.use ::Rack::MethodOverride unless config.api_only
43
42
  middleware.use ::ActionDispatch::RequestId
43
+ middleware.use ::ActionDispatch::RemoteIp, config.action_dispatch.ip_spoofing_check, config.action_dispatch.trusted_proxies
44
44
 
45
- # Must come after Rack::MethodOverride to properly log overridden methods
46
45
  middleware.use ::Rails::Rack::Logger, config.log_tags
47
46
  middleware.use ::ActionDispatch::ShowExceptions, show_exceptions_app
48
47
  middleware.use ::ActionDispatch::DebugExceptions, app, config.debug_exception_response_format
49
- middleware.use ::ActionDispatch::RemoteIp, config.action_dispatch.ip_spoofing_check, config.action_dispatch.trusted_proxies
50
48
 
51
49
  unless config.cache_classes
52
50
  middleware.use ::ActionDispatch::Reloader, app.reloader
@@ -76,9 +74,9 @@ module Rails
76
74
  return unless rack_cache
77
75
 
78
76
  begin
79
- require 'rack/cache'
77
+ require "rack/cache"
80
78
  rescue LoadError => error
81
- error.message << ' Be sure to add rack-cache to your Gemfile'
79
+ error.message << " Be sure to add rack-cache to your Gemfile"
82
80
  raise
83
81
  end
84
82
 
@@ -22,17 +22,25 @@ module Rails
22
22
  initializer :add_builtin_route do |app|
23
23
  if Rails.env.development?
24
24
  app.routes.prepend do
25
- get '/rails/info/properties' => "rails/info#properties", internal: true
26
- get '/rails/info/routes' => "rails/info#routes", internal: true
27
- get '/rails/info' => "rails/info#index", internal: true
25
+ get "/rails/info/properties" => "rails/info#properties", internal: true
26
+ get "/rails/info/routes" => "rails/info#routes", internal: true
27
+ get "/rails/info" => "rails/info#index", internal: true
28
28
  end
29
29
 
30
30
  app.routes.append do
31
- get '/' => "rails/welcome#index", internal: true
31
+ get "/" => "rails/welcome#index", internal: true
32
32
  end
33
33
  end
34
34
  end
35
35
 
36
+ # Setup default session store if not already set in config/application.rb
37
+ initializer :setup_default_session_store, before: :build_middleware_stack do |app|
38
+ unless app.config.session_store?
39
+ app_name = app.class.name ? app.railtie_name.chomp("_application") : ""
40
+ app.config.session_store :cookie_store, key: "_#{app_name}_session"
41
+ end
42
+ end
43
+
36
44
  initializer :build_middleware_stack do
37
45
  build_middleware_stack
38
46
  end
@@ -98,7 +106,7 @@ module Rails
98
106
 
99
107
  elsif config.allow_concurrency == :unsafe
100
108
  # Do nothing, even if we know this is dangerous. This is the
101
- # historical behaviour for true.
109
+ # historical behavior for true.
102
110
 
103
111
  else
104
112
  # Default concurrency setting: enabled, but safe
@@ -116,8 +124,9 @@ module Rails
116
124
  # the hook are taken into account.
117
125
  initializer :set_routes_reloader_hook do |app|
118
126
  reloader = routes_reloader
127
+ reloader.eager_load = app.config.eager_load
119
128
  reloader.execute_if_updated
120
- self.reloaders << reloader
129
+ reloaders << reloader
121
130
  app.reloader.to_run do
122
131
  # We configure #execute rather than #execute_if_updated because if
123
132
  # autoloaded constants are cleared we need to reload routes also in
@@ -153,7 +162,7 @@ module Rails
153
162
 
154
163
  if config.reload_classes_only_on_change
155
164
  reloader = config.file_watcher.new(*watchable_args, &callback)
156
- self.reloaders << reloader
165
+ reloaders << reloader
157
166
 
158
167
  # Prepend this callback to have autoloaded constants cleared before
159
168
  # any other possible reloading, in case they need to autoload fresh
@@ -4,11 +4,13 @@ module Rails
4
4
  class Application
5
5
  class RoutesReloader
6
6
  attr_reader :route_sets, :paths
7
- delegate :execute_if_updated, :execute, :updated?, to: :updater
7
+ attr_accessor :eager_load
8
+ delegate :updated?, to: :updater
8
9
 
9
10
  def initialize
10
11
  @paths = []
11
12
  @route_sets = []
13
+ @eager_load = false
12
14
  end
13
15
 
14
16
  def reload!
@@ -19,6 +21,19 @@ module Rails
19
21
  revert
20
22
  end
21
23
 
24
+ def execute
25
+ ret = updater.execute
26
+ route_sets.each(&:eager_load!) if eager_load
27
+ ret
28
+ end
29
+
30
+ def execute_if_updated
31
+ if updated = updater.execute_if_updated
32
+ route_sets.each(&:eager_load!) if eager_load
33
+ end
34
+ updated
35
+ end
36
+
22
37
  private
23
38
 
24
39
  def updater
@@ -1,16 +1,16 @@
1
1
  class Rails::ApplicationController < ActionController::Base # :nodoc:
2
- self.view_paths = File.expand_path('../templates', __FILE__)
3
- layout 'application'
2
+ self.view_paths = File.expand_path("../templates", __FILE__)
3
+ layout "application"
4
4
 
5
- protected
5
+ private
6
6
 
7
- def require_local!
8
- unless local_request?
9
- render html: '<p>For security purposes, this information is only available to local requests.</p>'.html_safe, status: :forbidden
7
+ def require_local!
8
+ unless local_request?
9
+ render html: "<p>For security purposes, this information is only available to local requests.</p>".html_safe, status: :forbidden
10
+ end
10
11
  end
11
- end
12
12
 
13
- def local_request?
14
- Rails.application.config.consider_all_requests_local || request.local?
15
- end
13
+ def local_request?
14
+ Rails.application.config.consider_all_requests_local || request.local?
15
+ end
16
16
  end
@@ -1,12 +1,12 @@
1
- require 'active_support/backtrace_cleaner'
1
+ require "active_support/backtrace_cleaner"
2
2
 
3
3
  module Rails
4
4
  class BacktraceCleaner < ActiveSupport::BacktraceCleaner
5
- APP_DIRS_PATTERN = /^\/?(app|config|lib|test)/
5
+ APP_DIRS_PATTERN = /^\/?(app|config|lib|test|\(\w*\))/
6
6
  RENDER_TEMPLATE_PATTERN = /:in `_render_template_\w*'/
7
- EMPTY_STRING = ''.freeze
8
- SLASH = '/'.freeze
9
- DOT_SLASH = './'.freeze
7
+ EMPTY_STRING = "".freeze
8
+ SLASH = "/".freeze
9
+ DOT_SLASH = "./".freeze
10
10
 
11
11
  def initialize
12
12
  super
@@ -1,15 +1,17 @@
1
- require 'rails/app_loader'
1
+ require "rails/app_loader"
2
2
 
3
3
  # If we are inside a Rails application this method performs an exec and thus
4
4
  # the rest of this script is not run.
5
5
  Rails::AppLoader.exec_app
6
6
 
7
- require 'rails/ruby_version_check'
7
+ require "rails/ruby_version_check"
8
8
  Signal.trap("INT") { puts; exit(1) }
9
9
 
10
- if ARGV.first == 'plugin'
10
+ require "rails/command"
11
+
12
+ if ARGV.first == "plugin"
11
13
  ARGV.shift
12
- require 'rails/commands/plugin'
14
+ Rails::Command.invoke :plugin, ARGV
13
15
  else
14
- require 'rails/commands/application'
16
+ Rails::Command.invoke :application, ARGV
15
17
  end
@@ -1,16 +1,15 @@
1
- require 'rails/code_statistics_calculator'
2
- require 'active_support/core_ext/enumerable'
1
+ require "rails/code_statistics_calculator"
2
+ require "active_support/core_ext/enumerable"
3
3
 
4
4
  class CodeStatistics #:nodoc:
5
+ TEST_TYPES = ["Controller tests",
6
+ "Helper tests",
7
+ "Model tests",
8
+ "Mailer tests",
9
+ "Job tests",
10
+ "Integration tests"]
5
11
 
6
- TEST_TYPES = ['Controller tests',
7
- 'Helper tests',
8
- 'Model tests',
9
- 'Mailer tests',
10
- 'Job tests',
11
- 'Integration tests']
12
-
13
- HEADERS = {lines: ' Lines', code_lines: ' LOC', classes: 'Classes', methods: 'Methods'}
12
+ HEADERS = { lines: " Lines", code_lines: " LOC", classes: "Classes", methods: "Methods" }
14
13
 
15
14
  def initialize(*pairs)
16
15
  @pairs = pairs
@@ -33,7 +32,7 @@ class CodeStatistics #:nodoc:
33
32
 
34
33
  private
35
34
  def calculate_statistics
36
- Hash[@pairs.map{|pair| [pair.first, calculate_directory_statistics(pair.last)]}]
35
+ Hash[@pairs.map { |pair| [pair.first, calculate_directory_statistics(pair.last)] }]
37
36
  end
38
37
 
39
38
  def calculate_directory_statistics(directory, pattern = /^(?!\.).*?\.(rb|js|coffee|rake)$/)
@@ -71,25 +70,25 @@ class CodeStatistics #:nodoc:
71
70
  end
72
71
 
73
72
  def width_for(label)
74
- [@statistics.values.sum {|s| s.send(label) }.to_s.size, HEADERS[label].length].max
73
+ [@statistics.values.sum { |s| s.send(label) }.to_s.size, HEADERS[label].length].max
75
74
  end
76
75
 
77
76
  def print_header
78
77
  print_splitter
79
- print '| Name '
78
+ print "| Name "
80
79
  HEADERS.each do |k, v|
81
80
  print " | #{v.rjust(width_for(k))}"
82
81
  end
83
- puts ' | M/C | LOC/M |'
82
+ puts " | M/C | LOC/M |"
84
83
  print_splitter
85
84
  end
86
85
 
87
86
  def print_splitter
88
- print '+----------------------'
87
+ print "+----------------------"
89
88
  HEADERS.each_key do |k|
90
89
  print "+#{'-' * (width_for(k) + 2)}"
91
90
  end
92
- puts '+-----+-------+'
91
+ puts "+-----+-------+"
93
92
  end
94
93
 
95
94
  def print_line(name, statistics)
@@ -107,7 +106,7 @@ class CodeStatistics #:nodoc:
107
106
  code = calculate_code
108
107
  tests = calculate_tests
109
108
 
110
- puts " Code LOC: #{code} Test LOC: #{tests} Code to Test Ratio: 1:#{sprintf("%.1f", tests.to_f/code)}"
109
+ puts " Code LOC: #{code} Test LOC: #{tests} Code to Test Ratio: 1:#{sprintf("%.1f", tests.to_f / code)}"
111
110
  puts ""
112
111
  end
113
112
  end