railties 5.0.0 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +117 -415
- data/MIT-LICENSE +1 -1
- data/RDOC_MAIN.rdoc +4 -4
- data/exe/rails +2 -2
- data/lib/rails/all.rb +1 -1
- data/lib/rails/api/generator.rb +28 -0
- data/lib/rails/api/task.rb +54 -42
- data/lib/rails/app_loader.rb +9 -9
- data/lib/rails/application/bootstrap.rb +12 -7
- data/lib/rails/application/configuration.rb +56 -52
- data/lib/rails/application/default_middleware_stack.rb +3 -5
- data/lib/rails/application/finisher.rb +16 -7
- data/lib/rails/application/routes_reloader.rb +16 -1
- data/lib/rails/application.rb +33 -36
- data/lib/rails/application_controller.rb +10 -10
- data/lib/rails/backtrace_cleaner.rb +5 -5
- data/lib/rails/cli.rb +7 -5
- data/lib/rails/code_statistics.rb +17 -17
- data/lib/rails/code_statistics_calculator.rb +3 -3
- data/lib/rails/command/actions.rb +42 -0
- data/lib/rails/command/base.rb +155 -0
- data/lib/rails/command/behavior.rb +123 -0
- data/lib/rails/command/environment_argument.rb +34 -0
- data/lib/rails/command.rb +111 -0
- data/lib/rails/commands/application/application_command.rb +29 -0
- data/lib/rails/commands/console/console_command.rb +89 -0
- data/lib/rails/commands/dbconsole/dbconsole_command.rb +155 -0
- data/lib/rails/commands/destroy/destroy_command.rb +26 -0
- data/lib/rails/commands/generate/generate_command.rb +28 -0
- data/lib/rails/commands/help/USAGE +15 -0
- data/lib/rails/commands/help/help_command.rb +13 -0
- data/lib/rails/commands/new/new_command.rb +17 -0
- data/lib/rails/commands/plugin/plugin_command.rb +43 -0
- data/lib/rails/commands/rake/rake_command.rb +49 -0
- data/lib/rails/commands/runner/USAGE +17 -0
- data/lib/rails/commands/runner/runner_command.rb +49 -0
- data/lib/rails/commands/secrets/USAGE +60 -0
- data/lib/rails/commands/secrets/secrets_command.rb +49 -0
- data/lib/rails/commands/server/server_command.rb +216 -0
- data/lib/rails/commands/test/test_command.rb +22 -0
- data/lib/rails/commands/version/version_command.rb +9 -0
- data/lib/rails/commands.rb +2 -4
- data/lib/rails/configuration.rb +7 -7
- data/lib/rails/console/app.rb +4 -4
- data/lib/rails/dev_caching.rb +8 -8
- data/lib/rails/engine/commands.rb +6 -13
- data/lib/rails/engine/configuration.rb +2 -2
- data/lib/rails/engine/updater.rb +19 -0
- data/lib/rails/engine.rb +62 -63
- data/lib/rails/gem_version.rb +1 -1
- data/lib/rails/generators/actions/create_migration.rb +24 -25
- data/lib/rails/generators/actions.rb +20 -21
- data/lib/rails/generators/active_model.rb +3 -3
- data/lib/rails/generators/app_base.rb +119 -93
- data/lib/rails/generators/base.rb +32 -33
- data/lib/rails/generators/css/assets/assets_generator.rb +1 -1
- data/lib/rails/generators/erb/controller/controller_generator.rb +1 -1
- data/lib/rails/generators/erb/mailer/mailer_generator.rb +16 -9
- data/lib/rails/generators/erb/mailer/templates/layout.html.erb.tt +13 -0
- data/lib/rails/generators/erb/mailer/templates/layout.text.erb.tt +1 -0
- data/lib/rails/generators/erb/scaffold/scaffold_generator.rb +3 -3
- data/lib/rails/generators/erb/scaffold/templates/_form.html.erb +8 -8
- data/lib/rails/generators/erb.rb +14 -14
- data/lib/rails/generators/generated_attribute.rb +27 -27
- data/lib/rails/generators/js/assets/assets_generator.rb +1 -1
- data/lib/rails/generators/migration.rb +8 -8
- data/lib/rails/generators/model_helpers.rb +2 -2
- data/lib/rails/generators/named_base.rb +66 -58
- data/lib/rails/generators/rails/app/app_generator.rb +153 -84
- data/lib/rails/generators/rails/app/templates/Gemfile +13 -3
- data/lib/rails/generators/rails/app/templates/app/assets/config/manifest.js.tt +0 -2
- data/lib/rails/generators/rails/app/templates/app/assets/javascripts/application.js.tt +4 -5
- data/lib/rails/generators/rails/app/templates/app/assets/javascripts/cable.js +1 -1
- data/lib/rails/generators/rails/app/templates/app/assets/stylesheets/application.css +2 -2
- data/lib/rails/generators/rails/app/templates/app/views/layouts/application.html.erb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/bin/{setup → setup.tt} +6 -0
- data/lib/rails/generators/rails/app/templates/bin/{update → update.tt} +2 -0
- data/lib/rails/generators/rails/app/templates/bin/yarn +10 -0
- data/lib/rails/generators/rails/app/templates/config/application.rb +7 -0
- data/lib/rails/generators/rails/app/templates/config/cable.yml +1 -0
- data/lib/rails/generators/rails/app/templates/config/databases/frontbase.yml +1 -0
- data/lib/rails/generators/rails/app/templates/config/databases/ibm_db.yml +1 -0
- data/lib/rails/generators/rails/app/templates/config/databases/jdbc.yml +1 -0
- data/lib/rails/generators/rails/app/templates/config/databases/jdbcmysql.yml +2 -1
- data/lib/rails/generators/rails/app/templates/config/databases/jdbcpostgresql.yml +1 -0
- data/lib/rails/generators/rails/app/templates/config/databases/jdbcsqlite3.yml +1 -0
- data/lib/rails/generators/rails/app/templates/config/databases/mysql.yml +2 -2
- data/lib/rails/generators/rails/app/templates/config/databases/oracle.yml +6 -3
- data/lib/rails/generators/rails/app/templates/config/databases/postgresql.yml +1 -1
- data/lib/rails/generators/rails/app/templates/config/databases/sqlite3.yml +1 -1
- data/lib/rails/generators/rails/app/templates/config/databases/sqlserver.yml +4 -20
- data/lib/rails/generators/rails/app/templates/config/environments/development.rb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/environments/production.rb.tt +10 -1
- data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +1 -1
- data/lib/rails/generators/rails/app/templates/config/initializers/assets.rb.tt +8 -3
- data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults_5_1.rb.tt +16 -0
- data/lib/rails/generators/rails/app/templates/config/locales/en.yml +10 -0
- data/lib/rails/generators/rails/app/templates/config/puma.rb +16 -7
- data/lib/rails/generators/rails/app/templates/config/secrets.yml +12 -2
- data/lib/rails/generators/rails/app/templates/gitignore +5 -1
- data/lib/rails/generators/rails/app/templates/package.json +5 -0
- data/lib/rails/generators/rails/app/templates/public/404.html +6 -6
- data/lib/rails/generators/rails/app/templates/public/422.html +6 -6
- data/lib/rails/generators/rails/app/templates/public/500.html +6 -6
- data/lib/rails/generators/rails/app/templates/public/robots.txt +0 -4
- data/lib/rails/generators/rails/app/templates/test/application_system_test_case.rb +5 -0
- data/lib/rails/generators/rails/app/templates/test/test_helper.rb +0 -1
- data/lib/rails/generators/rails/assets/assets_generator.rb +10 -10
- data/lib/rails/generators/rails/controller/controller_generator.rb +17 -12
- data/lib/rails/generators/rails/encrypted_secrets/encrypted_secrets_generator.rb +66 -0
- data/lib/rails/generators/rails/encrypted_secrets/templates/config/secrets.yml.enc +3 -0
- data/lib/rails/generators/rails/generator/generator_generator.rb +2 -3
- data/lib/rails/generators/rails/helper/helper_generator.rb +1 -1
- data/lib/rails/generators/rails/model/model_generator.rb +1 -1
- data/lib/rails/generators/rails/plugin/plugin_generator.rb +26 -30
- data/lib/rails/generators/rails/plugin/templates/bin/rails.tt +1 -0
- data/lib/rails/generators/rails/plugin/templates/bin/test.tt +3 -7
- data/lib/rails/generators/rails/plugin/templates/test/application_system_test_case.rb +5 -0
- data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb +0 -3
- data/lib/rails/generators/rails/resource/resource_generator.rb +2 -2
- data/lib/rails/generators/rails/scaffold/scaffold_generator.rb +5 -1
- data/lib/rails/generators/rails/scaffold/templates/scaffold.css +4 -8
- data/lib/rails/generators/rails/scaffold_controller/scaffold_controller_generator.rb +7 -3
- data/lib/rails/generators/rails/system_test/USAGE +10 -0
- data/lib/rails/generators/rails/system_test/system_test_generator.rb +7 -0
- data/lib/rails/generators/rails/task/task_generator.rb +1 -2
- data/lib/rails/generators/resource_helpers.rb +13 -10
- data/lib/rails/generators/test_case.rb +5 -6
- data/lib/rails/generators/test_unit/controller/controller_generator.rb +3 -3
- data/lib/rails/generators/test_unit/generator/generator_generator.rb +3 -3
- data/lib/rails/generators/test_unit/helper/helper_generator.rb +1 -1
- data/lib/rails/generators/test_unit/integration/integration_generator.rb +2 -2
- data/lib/rails/generators/test_unit/integration/templates/integration_test.rb +2 -0
- data/lib/rails/generators/test_unit/job/job_generator.rb +3 -3
- data/lib/rails/generators/test_unit/mailer/mailer_generator.rb +5 -5
- data/lib/rails/generators/test_unit/model/model_generator.rb +3 -4
- data/lib/rails/generators/test_unit/plugin/plugin_generator.rb +2 -2
- data/lib/rails/generators/test_unit/scaffold/scaffold_generator.rb +4 -4
- data/lib/rails/generators/test_unit/system/system_generator.rb +17 -0
- data/lib/rails/generators/test_unit/system/templates/application_system_test_case.rb +5 -0
- data/lib/rails/generators/test_unit/system/templates/system_test.rb +9 -0
- data/lib/rails/generators/test_unit.rb +1 -1
- data/lib/rails/generators/testing/assertions.rb +4 -4
- data/lib/rails/generators/testing/behaviour.rb +20 -21
- data/lib/rails/generators.rb +230 -312
- data/lib/rails/info.rb +20 -20
- data/lib/rails/info_controller.rb +15 -15
- data/lib/rails/initializable.rb +6 -2
- data/lib/rails/mailers_controller.rb +11 -11
- data/lib/rails/paths.rb +12 -6
- data/lib/rails/plugin/test.rb +7 -0
- data/lib/rails/rack/logger.rb +44 -46
- data/lib/rails/railtie/configurable.rb +6 -6
- data/lib/rails/railtie/configuration.rb +1 -1
- data/lib/rails/railtie.rb +41 -38
- data/lib/rails/ruby_version_check.rb +1 -1
- data/lib/rails/secrets.rb +100 -0
- data/lib/rails/source_annotation_extractor.rb +15 -9
- data/lib/rails/tasks/annotations.rake +3 -3
- data/lib/rails/tasks/dev.rake +2 -2
- data/lib/rails/tasks/engine.rake +15 -4
- data/lib/rails/tasks/framework.rake +8 -18
- data/lib/rails/tasks/initializers.rake +1 -1
- data/lib/rails/tasks/log.rake +14 -10
- data/lib/rails/tasks/middleware.rake +1 -1
- data/lib/rails/tasks/misc.rake +10 -10
- data/lib/rails/tasks/restart.rake +4 -4
- data/lib/rails/tasks/routes.rake +3 -12
- data/lib/rails/tasks/statistics.rake +3 -3
- data/lib/rails/tasks/tmp.rake +7 -7
- data/lib/rails/tasks/yarn.rake +11 -0
- data/lib/rails/tasks.rb +3 -2
- data/lib/rails/templates/rails/mailers/email.html.erb +4 -1
- data/lib/rails/test_help.rb +14 -10
- data/lib/rails/test_unit/line_filtering.rb +2 -2
- data/lib/rails/test_unit/minitest_plugin.rb +62 -15
- data/lib/rails/test_unit/railtie.rb +6 -3
- data/lib/rails/test_unit/reporter.rb +2 -2
- data/lib/rails/test_unit/test_requirer.rb +8 -5
- data/lib/rails/test_unit/testing.rake +20 -15
- data/lib/rails/version.rb +1 -1
- data/lib/rails/welcome_controller.rb +1 -1
- data/lib/rails.rb +19 -18
- metadata +52 -27
- data/lib/rails/commands/application.rb +0 -17
- data/lib/rails/commands/commands_tasks.rb +0 -180
- data/lib/rails/commands/console.rb +0 -68
- data/lib/rails/commands/console_helper.rb +0 -34
- data/lib/rails/commands/dbconsole.rb +0 -173
- data/lib/rails/commands/destroy.rb +0 -11
- data/lib/rails/commands/generate.rb +0 -13
- data/lib/rails/commands/plugin.rb +0 -23
- data/lib/rails/commands/rake_proxy.rb +0 -34
- data/lib/rails/commands/runner.rb +0 -69
- data/lib/rails/commands/server.rb +0 -139
- data/lib/rails/commands/test.rb +0 -9
- data/lib/rails/engine/commands_tasks.rb +0 -116
- data/lib/rails/generators/rails/app/templates/config/initializers/new_framework_defaults.rb.tt +0 -34
- data/lib/rails/generators/rails/app/templates/config/initializers/session_store.rb.tt +0 -3
- data/lib/rails/rack/debugger.rb +0 -3
data/RDOC_MAIN.rdoc
CHANGED
|
@@ -35,17 +35,17 @@ can read more about Action Pack in its {README}[link:files/actionpack/README_rdo
|
|
|
35
35
|
|
|
36
36
|
1. Install \Rails at the command prompt if you haven't yet:
|
|
37
37
|
|
|
38
|
-
gem install rails
|
|
38
|
+
$ gem install rails
|
|
39
39
|
|
|
40
40
|
2. At the command prompt, create a new \Rails application:
|
|
41
41
|
|
|
42
|
-
rails new myapp
|
|
42
|
+
$ rails new myapp
|
|
43
43
|
|
|
44
44
|
where "myapp" is the application name.
|
|
45
45
|
|
|
46
46
|
3. Change directory to +myapp+ and start the web server:
|
|
47
47
|
|
|
48
|
-
cd myapp; rails server
|
|
48
|
+
$ cd myapp; rails server
|
|
49
49
|
|
|
50
50
|
Run with <tt>--help</tt> or <tt>-h</tt> for options.
|
|
51
51
|
|
|
@@ -57,7 +57,7 @@ can read more about Action Pack in its {README}[link:files/actionpack/README_rdo
|
|
|
57
57
|
|
|
58
58
|
* The \README file created within your application.
|
|
59
59
|
* {Getting Started with \Rails}[http://guides.rubyonrails.org/getting_started.html].
|
|
60
|
-
* {Ruby on \Rails Tutorial}[
|
|
60
|
+
* {Ruby on \Rails Tutorial}[https://www.railstutorial.org/book].
|
|
61
61
|
* {Ruby on \Rails Guides}[http://guides.rubyonrails.org].
|
|
62
62
|
* {The API Documentation}[http://api.rubyonrails.org].
|
|
63
63
|
|
data/exe/rails
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
|
-
git_path = File.expand_path(
|
|
3
|
+
git_path = File.expand_path("../../../.git", __FILE__)
|
|
4
4
|
|
|
5
5
|
if File.exist?(git_path)
|
|
6
|
-
railties_path = File.expand_path(
|
|
6
|
+
railties_path = File.expand_path("../../lib", __FILE__)
|
|
7
7
|
$:.unshift(railties_path)
|
|
8
8
|
end
|
|
9
9
|
require "rails/cli"
|
data/lib/rails/all.rb
CHANGED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
require "sdoc"
|
|
2
|
+
|
|
3
|
+
class RDoc::Generator::API < RDoc::Generator::SDoc # :nodoc:
|
|
4
|
+
RDoc::RDoc.add_generator self
|
|
5
|
+
|
|
6
|
+
def generate_class_tree_level(classes, visited = {})
|
|
7
|
+
# Only process core extensions on the first visit.
|
|
8
|
+
if visited.empty?
|
|
9
|
+
core_exts, classes = classes.partition { |klass| core_extension?(klass) }
|
|
10
|
+
|
|
11
|
+
super.unshift([ "Core extensions", "", "", build_core_ext_subtree(core_exts, visited) ])
|
|
12
|
+
else
|
|
13
|
+
super
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
private
|
|
18
|
+
def build_core_ext_subtree(classes, visited)
|
|
19
|
+
classes.map do |klass|
|
|
20
|
+
[ klass.name, klass.document_self_or_methods ? klass.path : "", "",
|
|
21
|
+
generate_class_tree_level(klass.classes_and_modules, visited) ]
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def core_extension?(klass)
|
|
26
|
+
klass.name != "ActiveSupport" && klass.in_files.any? { |file| file.absolute_name.include?("core_ext") }
|
|
27
|
+
end
|
|
28
|
+
end
|
data/lib/rails/api/task.rb
CHANGED
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
require
|
|
1
|
+
require "rdoc/task"
|
|
2
|
+
require_relative "generator"
|
|
2
3
|
|
|
3
4
|
module Rails
|
|
4
5
|
module API
|
|
5
6
|
class Task < RDoc::Task
|
|
6
7
|
RDOC_FILES = {
|
|
7
|
-
|
|
8
|
-
:
|
|
8
|
+
"activesupport" => {
|
|
9
|
+
include: %w(
|
|
9
10
|
README.rdoc
|
|
10
11
|
lib/active_support/**/*.rb
|
|
11
|
-
)
|
|
12
|
-
:exclude => 'lib/active_support/vendor/*'
|
|
12
|
+
)
|
|
13
13
|
},
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
:
|
|
15
|
+
"activerecord" => {
|
|
16
|
+
include: %w(
|
|
17
17
|
README.rdoc
|
|
18
18
|
lib/active_record/**/*.rb
|
|
19
19
|
)
|
|
20
20
|
},
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
:
|
|
22
|
+
"activemodel" => {
|
|
23
|
+
include: %w(
|
|
24
24
|
README.rdoc
|
|
25
25
|
lib/active_model/**/*.rb
|
|
26
26
|
)
|
|
27
27
|
},
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
:
|
|
29
|
+
"actionpack" => {
|
|
30
|
+
include: %w(
|
|
31
31
|
README.rdoc
|
|
32
32
|
lib/abstract_controller/**/*.rb
|
|
33
33
|
lib/action_controller/**/*.rb
|
|
@@ -35,41 +35,45 @@ module Rails
|
|
|
35
35
|
)
|
|
36
36
|
},
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
:
|
|
38
|
+
"actionview" => {
|
|
39
|
+
include: %w(
|
|
40
40
|
README.rdoc
|
|
41
41
|
lib/action_view/**/*.rb
|
|
42
42
|
),
|
|
43
|
-
:
|
|
43
|
+
exclude: "lib/action_view/vendor/*"
|
|
44
44
|
},
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
:
|
|
46
|
+
"actionmailer" => {
|
|
47
|
+
include: %w(
|
|
48
48
|
README.rdoc
|
|
49
49
|
lib/action_mailer/**/*.rb
|
|
50
50
|
)
|
|
51
51
|
},
|
|
52
52
|
|
|
53
|
-
|
|
54
|
-
:
|
|
53
|
+
"activejob" => {
|
|
54
|
+
include: %w(
|
|
55
55
|
README.md
|
|
56
56
|
lib/active_job/**/*.rb
|
|
57
57
|
)
|
|
58
58
|
},
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
:
|
|
60
|
+
"actioncable" => {
|
|
61
|
+
include: %w(
|
|
62
62
|
README.md
|
|
63
63
|
lib/action_cable/**/*.rb
|
|
64
64
|
)
|
|
65
65
|
},
|
|
66
66
|
|
|
67
|
-
|
|
68
|
-
:
|
|
67
|
+
"railties" => {
|
|
68
|
+
include: %w(
|
|
69
69
|
README.rdoc
|
|
70
70
|
lib/**/*.rb
|
|
71
71
|
),
|
|
72
|
-
:
|
|
72
|
+
exclude: %w(
|
|
73
|
+
lib/rails/generators/**/templates/**/*.rb
|
|
74
|
+
lib/rails/test_unit/*
|
|
75
|
+
lib/rails/api/generator.rb
|
|
76
|
+
)
|
|
73
77
|
}
|
|
74
78
|
}
|
|
75
79
|
|
|
@@ -80,7 +84,7 @@ module Rails
|
|
|
80
84
|
# Be lazy computing stuff to have as light impact as possible to
|
|
81
85
|
# the rest of tasks.
|
|
82
86
|
before_running_rdoc do
|
|
83
|
-
|
|
87
|
+
configure_sdoc
|
|
84
88
|
configure_rdoc_files
|
|
85
89
|
setup_horo_variables
|
|
86
90
|
end
|
|
@@ -91,20 +95,15 @@ module Rails
|
|
|
91
95
|
# no-op
|
|
92
96
|
end
|
|
93
97
|
|
|
94
|
-
def
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
self.title = 'Ruby on Rails API'
|
|
98
|
+
def configure_sdoc
|
|
99
|
+
self.title = "Ruby on Rails API"
|
|
98
100
|
self.rdoc_dir = api_dir
|
|
99
101
|
|
|
100
|
-
options <<
|
|
101
|
-
options <<
|
|
102
|
+
options << "-m" << api_main
|
|
103
|
+
options << "-e" << "UTF-8"
|
|
102
104
|
|
|
103
|
-
options <<
|
|
104
|
-
options <<
|
|
105
|
-
rescue LoadError
|
|
106
|
-
$stderr.puts %(Unable to load SDoc, please add\n\n gem 'sdoc', require: false\n\nto the Gemfile.)
|
|
107
|
-
exit 1
|
|
105
|
+
options << "-f" << "api"
|
|
106
|
+
options << "-T" << "rails"
|
|
108
107
|
end
|
|
109
108
|
|
|
110
109
|
def configure_rdoc_files
|
|
@@ -121,22 +120,35 @@ module Rails
|
|
|
121
120
|
rdoc_files.exclude("#{cdr}/#{pattern}")
|
|
122
121
|
end
|
|
123
122
|
end
|
|
123
|
+
|
|
124
|
+
# Only generate documentation for files that have been
|
|
125
|
+
# changed since the API was generated.
|
|
126
|
+
if Dir.exist?("doc/rdoc") && !ENV["ALL"]
|
|
127
|
+
last_generation = DateTime.rfc2822(File.open("doc/rdoc/created.rid", &:readline))
|
|
128
|
+
|
|
129
|
+
rdoc_files.keep_if do |file|
|
|
130
|
+
File.mtime(file).to_datetime > last_generation
|
|
131
|
+
end
|
|
132
|
+
|
|
133
|
+
# Nothing to do
|
|
134
|
+
exit(0) if rdoc_files.empty?
|
|
135
|
+
end
|
|
124
136
|
end
|
|
125
137
|
|
|
126
138
|
def setup_horo_variables
|
|
127
|
-
ENV[
|
|
128
|
-
ENV[
|
|
139
|
+
ENV["HORO_PROJECT_NAME"] = "Ruby on Rails"
|
|
140
|
+
ENV["HORO_PROJECT_VERSION"] = rails_version
|
|
129
141
|
end
|
|
130
142
|
|
|
131
143
|
def api_main
|
|
132
|
-
component_root_dir(
|
|
144
|
+
component_root_dir("railties") + "/RDOC_MAIN.rdoc"
|
|
133
145
|
end
|
|
134
146
|
end
|
|
135
147
|
|
|
136
148
|
class RepoTask < Task
|
|
137
|
-
def
|
|
149
|
+
def configure_sdoc
|
|
138
150
|
super
|
|
139
|
-
options <<
|
|
151
|
+
options << "-g" # link to GitHub, SDoc flag
|
|
140
152
|
end
|
|
141
153
|
|
|
142
154
|
def component_root_dir(component)
|
|
@@ -144,7 +156,7 @@ module Rails
|
|
|
144
156
|
end
|
|
145
157
|
|
|
146
158
|
def api_dir
|
|
147
|
-
|
|
159
|
+
"doc/rdoc"
|
|
148
160
|
end
|
|
149
161
|
end
|
|
150
162
|
|
|
@@ -156,7 +168,7 @@ module Rails
|
|
|
156
168
|
|
|
157
169
|
class StableTask < RepoTask
|
|
158
170
|
def rails_version
|
|
159
|
-
File.read(
|
|
171
|
+
File.read("RAILS_VERSION").strip
|
|
160
172
|
end
|
|
161
173
|
end
|
|
162
174
|
end
|
data/lib/rails/app_loader.rb
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
1
|
+
require "pathname"
|
|
2
|
+
require "rails/version"
|
|
3
3
|
|
|
4
4
|
module Rails
|
|
5
5
|
module AppLoader # :nodoc:
|
|
6
6
|
extend self
|
|
7
7
|
|
|
8
8
|
RUBY = Gem.ruby
|
|
9
|
-
EXECUTABLES = [
|
|
9
|
+
EXECUTABLES = ["bin/rails", "script/rails"]
|
|
10
10
|
BUNDLER_WARNING = <<EOS
|
|
11
11
|
Looks like your app's ./bin/rails is a stub that was generated by Bundler.
|
|
12
12
|
|
|
@@ -39,21 +39,21 @@ EOS
|
|
|
39
39
|
if contents =~ /(APP|ENGINE)_PATH/
|
|
40
40
|
exec RUBY, exe, *ARGV
|
|
41
41
|
break # non reachable, hack to be able to stub exec in the test suite
|
|
42
|
-
elsif exe.end_with?(
|
|
42
|
+
elsif exe.end_with?("bin/rails") && contents.include?("This file was generated by Bundler")
|
|
43
43
|
$stderr.puts(BUNDLER_WARNING)
|
|
44
|
-
Object.const_set(:APP_PATH, File.expand_path(
|
|
45
|
-
require File.expand_path(
|
|
46
|
-
require
|
|
44
|
+
Object.const_set(:APP_PATH, File.expand_path("config/application", Dir.pwd))
|
|
45
|
+
require File.expand_path("../boot", APP_PATH)
|
|
46
|
+
require "rails/commands"
|
|
47
47
|
break
|
|
48
48
|
end
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
# If we exhaust the search there is no executable, this could be a
|
|
52
52
|
# call to generate a new application, so restore the original cwd.
|
|
53
|
-
Dir.chdir(original_cwd)
|
|
53
|
+
Dir.chdir(original_cwd) && return if Pathname.new(Dir.pwd).root?
|
|
54
54
|
|
|
55
55
|
# Otherwise keep moving upwards in search of an executable.
|
|
56
|
-
Dir.chdir(
|
|
56
|
+
Dir.chdir("..")
|
|
57
57
|
end
|
|
58
58
|
end
|
|
59
59
|
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
3
|
-
require
|
|
4
|
-
require
|
|
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,
|
|
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,10 @@ 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
|
+
end
|
|
80
85
|
end
|
|
81
86
|
end
|
|
82
87
|
end
|
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
3
|
-
require
|
|
4
|
-
require
|
|
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,14 @@ 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, :log_level
|
|
20
18
|
|
|
21
|
-
|
|
22
|
-
attr_reader :encoding, :api_only, :static_cache_control
|
|
19
|
+
attr_reader :encoding, :api_only
|
|
23
20
|
|
|
24
21
|
def initialize(*)
|
|
25
22
|
super
|
|
26
|
-
self.encoding
|
|
23
|
+
self.encoding = Encoding::UTF_8
|
|
27
24
|
@allow_concurrency = nil
|
|
28
25
|
@consider_all_requests_local = false
|
|
29
26
|
@filter_parameters = []
|
|
@@ -34,11 +31,10 @@ module Rails
|
|
|
34
31
|
@public_file_server.index_name = "index"
|
|
35
32
|
@force_ssl = false
|
|
36
33
|
@ssl_options = {}
|
|
37
|
-
@session_store =
|
|
38
|
-
@session_options = {}
|
|
34
|
+
@session_store = nil
|
|
39
35
|
@time_zone = "UTC"
|
|
40
36
|
@beginning_of_week = :monday
|
|
41
|
-
@log_level =
|
|
37
|
+
@log_level = :debug
|
|
42
38
|
@generators = app_generators
|
|
43
39
|
@cache_store = [ :file_store, "#{root}/tmp/cache/" ]
|
|
44
40
|
@railties_order = [:all]
|
|
@@ -55,35 +51,35 @@ module Rails
|
|
|
55
51
|
@debug_exception_response_format = nil
|
|
56
52
|
@x = Custom.new
|
|
57
53
|
@enable_dependency_loading = false
|
|
54
|
+
@read_encrypted_secrets = false
|
|
58
55
|
end
|
|
59
56
|
|
|
60
|
-
def
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
57
|
+
def load_defaults(target_version)
|
|
58
|
+
case target_version.to_s
|
|
59
|
+
when "5.0"
|
|
60
|
+
if respond_to?(:action_controller)
|
|
61
|
+
action_controller.per_form_csrf_tokens = true
|
|
62
|
+
action_controller.forgery_protection_origin_check = true
|
|
63
|
+
end
|
|
67
64
|
|
|
68
|
-
|
|
69
|
-
end
|
|
65
|
+
ActiveSupport.to_time_preserves_timezone = true
|
|
70
66
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
Please use `config.public_file_server.enabled` instead.
|
|
75
|
-
eow
|
|
67
|
+
if respond_to?(:active_record)
|
|
68
|
+
active_record.belongs_to_required_by_default = true
|
|
69
|
+
end
|
|
76
70
|
|
|
77
|
-
|
|
78
|
-
|
|
71
|
+
self.ssl_options = { hsts: { subdomains: true } }
|
|
72
|
+
|
|
73
|
+
when "5.1"
|
|
74
|
+
load_defaults "5.0"
|
|
79
75
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
Please use `config.public_file_server.enabled = #{value}` instead.
|
|
84
|
-
eow
|
|
76
|
+
if respond_to?(:assets)
|
|
77
|
+
assets.unknown_asset_fallback = false
|
|
78
|
+
end
|
|
85
79
|
|
|
86
|
-
|
|
80
|
+
else
|
|
81
|
+
raise "Unknown version #{target_version.to_s.inspect}"
|
|
82
|
+
end
|
|
87
83
|
end
|
|
88
84
|
|
|
89
85
|
def encoding=(value)
|
|
@@ -113,7 +109,7 @@ module Rails
|
|
|
113
109
|
@paths ||= begin
|
|
114
110
|
paths = super
|
|
115
111
|
paths.add "config/database", with: "config/database.yml"
|
|
116
|
-
paths.add "config/secrets", with: "config
|
|
112
|
+
paths.add "config/secrets", with: "config", glob: "secrets.yml{,.enc}"
|
|
117
113
|
paths.add "config/environment", with: "config/environment.rb"
|
|
118
114
|
paths.add "lib/templates"
|
|
119
115
|
paths.add "log", with: "log/#{Rails.env}.log"
|
|
@@ -135,7 +131,7 @@ module Rails
|
|
|
135
131
|
require "yaml"
|
|
136
132
|
require "erb"
|
|
137
133
|
YAML.load(ERB.new(yaml.read).result) || {}
|
|
138
|
-
elsif ENV[
|
|
134
|
+
elsif ENV["DATABASE_URL"]
|
|
139
135
|
# Value from ENV['DATABASE_URL'] is set to default database connection
|
|
140
136
|
# by Active Record.
|
|
141
137
|
{}
|
|
@@ -152,42 +148,46 @@ module Rails
|
|
|
152
148
|
raise e, "Cannot load `Rails.application.database_configuration`:\n#{e.message}", e.backtrace
|
|
153
149
|
end
|
|
154
150
|
|
|
155
|
-
def log_level
|
|
156
|
-
@log_level ||= (Rails.env.production? ? :info : :debug)
|
|
157
|
-
end
|
|
158
|
-
|
|
159
151
|
def colorize_logging
|
|
160
152
|
ActiveSupport::LogSubscriber.colorize_logging
|
|
161
153
|
end
|
|
162
154
|
|
|
163
155
|
def colorize_logging=(val)
|
|
164
156
|
ActiveSupport::LogSubscriber.colorize_logging = val
|
|
165
|
-
|
|
157
|
+
generators.colorize_logging = val
|
|
166
158
|
end
|
|
167
159
|
|
|
168
|
-
def session_store(
|
|
169
|
-
if
|
|
170
|
-
|
|
171
|
-
when :disabled
|
|
172
|
-
nil
|
|
173
|
-
when :active_record_store
|
|
160
|
+
def session_store(new_session_store = nil, **options)
|
|
161
|
+
if new_session_store
|
|
162
|
+
if new_session_store == :active_record_store
|
|
174
163
|
begin
|
|
175
164
|
ActionDispatch::Session::ActiveRecordStore
|
|
176
165
|
rescue NameError
|
|
177
166
|
raise "`ActiveRecord::SessionStore` is extracted out of Rails into a gem. " \
|
|
178
167
|
"Please add `activerecord-session_store` to your Gemfile to use it."
|
|
179
168
|
end
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
@session_store = new_session_store
|
|
172
|
+
@session_options = options || {}
|
|
173
|
+
else
|
|
174
|
+
case @session_store
|
|
175
|
+
when :disabled
|
|
176
|
+
nil
|
|
177
|
+
when :active_record_store
|
|
178
|
+
ActionDispatch::Session::ActiveRecordStore
|
|
180
179
|
when Symbol
|
|
181
180
|
ActionDispatch::Session.const_get(@session_store.to_s.camelize)
|
|
182
181
|
else
|
|
183
182
|
@session_store
|
|
184
183
|
end
|
|
185
|
-
else
|
|
186
|
-
@session_store = args.shift
|
|
187
|
-
@session_options = args.shift || {}
|
|
188
184
|
end
|
|
189
185
|
end
|
|
190
186
|
|
|
187
|
+
def session_store? #:nodoc:
|
|
188
|
+
@session_store
|
|
189
|
+
end
|
|
190
|
+
|
|
191
191
|
def annotations
|
|
192
192
|
SourceAnnotationExtractor::Annotation
|
|
193
193
|
end
|
|
@@ -206,6 +206,10 @@ module Rails
|
|
|
206
206
|
}
|
|
207
207
|
end
|
|
208
208
|
end
|
|
209
|
+
|
|
210
|
+
def respond_to_missing?(symbol, *)
|
|
211
|
+
true
|
|
212
|
+
end
|
|
209
213
|
end
|
|
210
214
|
end
|
|
211
215
|
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
|
|
77
|
+
require "rack/cache"
|
|
80
78
|
rescue LoadError => error
|
|
81
|
-
error.message <<
|
|
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
|
|
26
|
-
get
|
|
27
|
-
get
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|