railties 4.2.0.beta1 → 4.2.0.beta2
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 +32 -2
- data/lib/rails/application.rb +10 -9
- data/lib/rails/application/bootstrap.rb +2 -1
- data/lib/rails/application/configuration.rb +5 -4
- data/lib/rails/application/default_middleware_stack.rb +5 -1
- data/lib/rails/commands/console.rb +3 -3
- data/lib/rails/commands/server.rb +9 -13
- data/lib/rails/gem_version.rb +1 -1
- data/lib/rails/generators/actions.rb +6 -4
- data/lib/rails/generators/app_base.rb +9 -6
- data/lib/rails/generators/rails/app/templates/Gemfile +2 -5
- data/lib/rails/generators/rails/app/templates/config/application.rb +3 -2
- 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 +7 -6
- data/lib/rails/generators/rails/app/templates/config/environments/test.rb.tt +3 -0
- data/lib/rails/generators/rails/model/USAGE +0 -1
- data/lib/rails/generators/rails/plugin/templates/rails/application.rb +1 -1
- data/lib/rails/generators/rails/plugin/templates/test/test_helper.rb +5 -2
- data/lib/rails/generators/test_unit/job/job_generator.rb +13 -0
- data/lib/rails/generators/test_unit/job/templates/unit_test.rb.erb +9 -0
- data/lib/rails/info.rb +5 -24
- data/lib/rails/tasks/statistics.rake +2 -1
- data/lib/rails/templates/rails/mailers/email.html.erb +5 -1
- data/lib/rails/templates/rails/welcome/index.html.erb +22 -6
- data/lib/rails/test_unit/testing.rake +3 -3
- metadata +10 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 040345e0c4130763671600ad48ad1870391eb869
|
4
|
+
data.tar.gz: 21438b89e2f4b41f4aa5e6ca7dff78fb70eca00d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7f9ea60ba359d056b51403433d758e3048aaacfe655a46dee8961f7c83867f07a21736905bc17e8b695866c7aef192db45ccfa6bcd781ffe3bf9e06beed218be
|
7
|
+
data.tar.gz: 87a6b6d8beb04bc539c3cbb236208c5417ea5af5320b689ae1829e86be4c12b893d417ec53f2fde0450799a32af19243dbc3c978da20a87dbc88f4f68eaffc2e
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,36 @@
|
|
1
|
+
* Remove --skip-action-view option from Rails::Generators::AppBase
|
2
|
+
|
3
|
+
Fixes #17023.
|
4
|
+
|
5
|
+
*Dan Olson*
|
6
|
+
|
7
|
+
* Specify dummy app's db migrate path in plugin's test_helper.rb.
|
8
|
+
|
9
|
+
Fixes #16877.
|
10
|
+
|
11
|
+
*Yukio Mizuta*
|
12
|
+
|
13
|
+
* Inject `Rack::Lock` if `config.eager_load` is false.
|
14
|
+
|
15
|
+
Fixes #15089.
|
16
|
+
|
17
|
+
*Xavier Noria*
|
18
|
+
|
19
|
+
* Change the path of dummy app location in plugin's test_helper.rb for cases
|
20
|
+
you specify dummy_path option.
|
21
|
+
|
22
|
+
*Yukio Mizuta*
|
23
|
+
|
24
|
+
* Fix a bug in the `gem` method for Rails templates when non-String options
|
25
|
+
are used.
|
26
|
+
|
27
|
+
Fixes #16709.
|
28
|
+
|
29
|
+
*Yves Senn*
|
30
|
+
|
1
31
|
* The [web-console](https://github.com/rails/web-console) gem is now
|
2
32
|
installed by default for new applications. It can help you debug
|
3
|
-
development exceptions by
|
33
|
+
development exceptions by spawning an interactive console in its cause
|
4
34
|
binding.
|
5
35
|
|
6
36
|
*Ryan Dao*, *Genadi Samokovarov*, *Guillermo Iguaran*
|
@@ -49,7 +79,7 @@
|
|
49
79
|
namespace: my_app_development
|
50
80
|
|
51
81
|
# config/production.rb
|
52
|
-
|
82
|
+
Rails.application.configure do
|
53
83
|
config.middleware.use ExceptionNotifier, config_for(:exception_notification)
|
54
84
|
end
|
55
85
|
|
data/lib/rails/application.rb
CHANGED
@@ -217,7 +217,7 @@ module Rails
|
|
217
217
|
# namespace: my_app_development
|
218
218
|
#
|
219
219
|
# # config/production.rb
|
220
|
-
#
|
220
|
+
# Rails.application.configure do
|
221
221
|
# config.middleware.use ExceptionNotifier, config_for(:exception_notification)
|
222
222
|
# end
|
223
223
|
def config_for(name)
|
@@ -414,8 +414,14 @@ module Rails
|
|
414
414
|
end
|
415
415
|
end
|
416
416
|
|
417
|
+
# Return an array of railties respecting the order they're loaded
|
418
|
+
# and the order specified by the +railties_order+ config.
|
419
|
+
#
|
420
|
+
# While when running initializers we need engines in reverse
|
421
|
+
# order here when copying migrations from railties we need then in the same
|
422
|
+
# order as given by +railties_order+
|
417
423
|
def migration_railties # :nodoc:
|
418
|
-
|
424
|
+
ordered_railties.flatten - [self]
|
419
425
|
end
|
420
426
|
|
421
427
|
protected
|
@@ -448,11 +454,6 @@ module Rails
|
|
448
454
|
super
|
449
455
|
end
|
450
456
|
|
451
|
-
def railties_without_main_app # :nodoc:
|
452
|
-
@railties_without_main_app ||= Rails::Railtie.subclasses.map(&:instance) +
|
453
|
-
Rails::Engine.subclasses.map(&:instance)
|
454
|
-
end
|
455
|
-
|
456
457
|
# Returns the ordered railties for this application considering railties_order.
|
457
458
|
def ordered_railties #:nodoc:
|
458
459
|
@ordered_railties ||= begin
|
@@ -472,13 +473,13 @@ module Rails
|
|
472
473
|
|
473
474
|
index = order.index(:all)
|
474
475
|
order[index] = all
|
475
|
-
order
|
476
|
+
order
|
476
477
|
end
|
477
478
|
end
|
478
479
|
|
479
480
|
def railties_initializers(current) #:nodoc:
|
480
481
|
initializers = []
|
481
|
-
ordered_railties.each do |r|
|
482
|
+
ordered_railties.reverse.flatten.each do |r|
|
482
483
|
if r == self
|
483
484
|
initializers += current
|
484
485
|
else
|
@@ -47,7 +47,8 @@ INFO
|
|
47
47
|
logger = ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new(STDERR))
|
48
48
|
logger.level = ActiveSupport::Logger::WARN
|
49
49
|
logger.warn(
|
50
|
-
"Rails Error: Unable to access log file. Please ensure that #{path} exists and is
|
50
|
+
"Rails Error: Unable to access log file. Please ensure that #{path} exists and is writable " +
|
51
|
+
"(ie, make it writable for user and group: chmod 0664 #{path}). " +
|
51
52
|
"The log level has been raised to WARN and the output directed to STDERR until the problem is fixed."
|
52
53
|
)
|
53
54
|
logger
|
@@ -93,9 +93,10 @@ module Rails
|
|
93
93
|
# Loads and returns the entire raw configuration of database from
|
94
94
|
# values stored in `config/database.yml`.
|
95
95
|
def database_configuration
|
96
|
-
|
96
|
+
path = paths["config/database"].existent.first
|
97
|
+
yaml = Pathname.new(path) if path
|
97
98
|
|
98
|
-
config = if yaml.exist?
|
99
|
+
config = if yaml && yaml.exist?
|
99
100
|
require "yaml"
|
100
101
|
require "erb"
|
101
102
|
YAML.load(ERB.new(yaml.read).result) || {}
|
@@ -104,7 +105,7 @@ module Rails
|
|
104
105
|
# by Active Record.
|
105
106
|
{}
|
106
107
|
else
|
107
|
-
raise "Could not load database configuration. No such file - #{
|
108
|
+
raise "Could not load database configuration. No such file - #{paths["config/database"].instance_variable_get(:@paths)}"
|
108
109
|
end
|
109
110
|
|
110
111
|
config
|
@@ -117,7 +118,7 @@ module Rails
|
|
117
118
|
end
|
118
119
|
|
119
120
|
def log_level
|
120
|
-
@log_level ||=
|
121
|
+
@log_level ||= :debug
|
121
122
|
end
|
122
123
|
|
123
124
|
def colorize_logging
|
@@ -66,7 +66,11 @@ module Rails
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def allow_concurrency?
|
69
|
-
config.allow_concurrency.nil?
|
69
|
+
if config.allow_concurrency.nil?
|
70
|
+
config.cache_classes && config.eager_load
|
71
|
+
else
|
72
|
+
config.allow_concurrency
|
73
|
+
end
|
70
74
|
end
|
71
75
|
|
72
76
|
def load_rack_cache
|
@@ -18,12 +18,12 @@ module Rails
|
|
18
18
|
opt.on("-e", "--environment=name", String,
|
19
19
|
"Specifies the environment to run this console under (test/development/production).",
|
20
20
|
"Default: development") { |v| options[:environment] = v.strip }
|
21
|
-
opt.on("--debugger", '
|
21
|
+
opt.on("--debugger", 'Enables the debugger.') do |v|
|
22
22
|
if RUBY_VERSION < '2.0.0'
|
23
23
|
options[:debugger] = v
|
24
24
|
else
|
25
|
-
puts "=> Notice: debugger option is ignored since
|
26
|
-
"it will be removed in future versions"
|
25
|
+
puts "=> Notice: debugger option is ignored since Ruby 2.0 and " \
|
26
|
+
"it will be removed in future versions."
|
27
27
|
end
|
28
28
|
end
|
29
29
|
opt.parse!(arguments)
|
@@ -20,20 +20,20 @@ module Rails
|
|
20
20
|
|
21
21
|
def option_parser(options)
|
22
22
|
OptionParser.new do |opts|
|
23
|
-
opts.banner = "Usage: rails server [mongrel, thin
|
23
|
+
opts.banner = "Usage: rails server [mongrel, thin etc] [options]"
|
24
24
|
opts.on("-p", "--port=port", Integer,
|
25
25
|
"Runs Rails on the specified port.", "Default: 3000") { |v| options[:Port] = v }
|
26
|
-
opts.on("-b", "--binding=
|
27
|
-
"Binds Rails to the specified
|
26
|
+
opts.on("-b", "--binding=IP", String,
|
27
|
+
"Binds Rails to the specified IP.", "Default: localhost") { |v| options[:Host] = v }
|
28
28
|
opts.on("-c", "--config=file", String,
|
29
|
-
"
|
30
|
-
opts.on("-d", "--daemon", "
|
31
|
-
opts.on("-u", "--debugger", "
|
29
|
+
"Uses a custom rackup configuration.") { |v| options[:config] = v }
|
30
|
+
opts.on("-d", "--daemon", "Runs server as a Daemon.") { options[:daemonize] = true }
|
31
|
+
opts.on("-u", "--debugger", "Enables the debugger.") do
|
32
32
|
if RUBY_VERSION < '2.0.0'
|
33
33
|
options[:debugger] = true
|
34
34
|
else
|
35
|
-
puts "=> Notice: debugger option is ignored since
|
36
|
-
"it will be removed in future versions"
|
35
|
+
puts "=> Notice: debugger option is ignored since Ruby 2.0 and " \
|
36
|
+
"it will be removed in future versions."
|
37
37
|
end
|
38
38
|
end
|
39
39
|
opts.on("-e", "--environment=name", String,
|
@@ -45,7 +45,7 @@ module Rails
|
|
45
45
|
|
46
46
|
opts.separator ""
|
47
47
|
|
48
|
-
opts.on("-h", "--help", "
|
48
|
+
opts.on("-h", "--help", "Shows this help message.") { puts opts; exit }
|
49
49
|
end
|
50
50
|
end
|
51
51
|
end
|
@@ -126,10 +126,6 @@ module Rails
|
|
126
126
|
puts "=> Rails #{Rails.version} application starting in #{Rails.env} on #{url}"
|
127
127
|
puts "=> Run `rails server -h` for more startup options"
|
128
128
|
|
129
|
-
if options[:Host].to_s.match(/0\.0\.0\.0/)
|
130
|
-
puts "=> Notice: server is listening on all interfaces (#{options[:Host]}). Consider using 127.0.0.1 (--binding option)"
|
131
|
-
end
|
132
|
-
|
133
129
|
puts "=> Ctrl-C to shutdown server" unless options[:daemonize]
|
134
130
|
end
|
135
131
|
|
data/lib/rails/gem_version.rb
CHANGED
@@ -268,11 +268,13 @@ module Rails
|
|
268
268
|
|
269
269
|
# Surround string with single quotes if there is no quotes.
|
270
270
|
# Otherwise fall back to double quotes
|
271
|
-
def quote(
|
272
|
-
|
273
|
-
|
271
|
+
def quote(value)
|
272
|
+
return value.inspect unless value.is_a? String
|
273
|
+
|
274
|
+
if value.include?("'")
|
275
|
+
value.inspect
|
274
276
|
else
|
275
|
-
"'#{
|
277
|
+
"'#{value}'"
|
276
278
|
end
|
277
279
|
end
|
278
280
|
end
|
@@ -44,9 +44,6 @@ module Rails
|
|
44
44
|
class_option :skip_gems, type: :array, default: [],
|
45
45
|
desc: 'Skip the provided gems files'
|
46
46
|
|
47
|
-
class_option :skip_action_view, type: :boolean, aliases: '-V', default: false,
|
48
|
-
desc: 'Skip Action View files'
|
49
|
-
|
50
47
|
class_option :skip_sprockets, type: :boolean, aliases: '-S', default: false,
|
51
48
|
desc: 'Skip Sprockets files'
|
52
49
|
|
@@ -167,7 +164,7 @@ module Rails
|
|
167
164
|
end
|
168
165
|
|
169
166
|
def include_all_railties?
|
170
|
-
!options[:skip_active_record] && !options[:
|
167
|
+
!options[:skip_active_record] && !options[:skip_test_unit] && !options[:skip_sprockets]
|
171
168
|
end
|
172
169
|
|
173
170
|
def comment_if(value)
|
@@ -281,8 +278,14 @@ module Rails
|
|
281
278
|
[]
|
282
279
|
else
|
283
280
|
gems = [coffee_gemfile_entry, javascript_runtime_gemfile_entry]
|
284
|
-
|
285
|
-
|
281
|
+
|
282
|
+
if options[:javascript] == 'jquery'
|
283
|
+
gems << GemfileEntry.version('jquery-rails', '~> 4.0.0.beta2',
|
284
|
+
'Use jQuery as the JavaScript library')
|
285
|
+
else
|
286
|
+
gems << GemfileEntry.version("#{options[:javascript]}-rails", nil,
|
287
|
+
"Use #{options[:javascript]} as the JavaScript library")
|
288
|
+
end
|
286
289
|
|
287
290
|
gems << GemfileEntry.version("turbolinks", nil,
|
288
291
|
"Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks")
|
@@ -15,9 +15,6 @@ source 'https://rubygems.org'
|
|
15
15
|
# Use ActiveModel has_secure_password
|
16
16
|
# gem 'bcrypt', '~> 3.1.7'
|
17
17
|
|
18
|
-
# Use Rails Html Sanitizer for HTML sanitization
|
19
|
-
gem 'rails-html-sanitizer', '~> 1.0'
|
20
|
-
|
21
18
|
# Use Unicorn as the app server
|
22
19
|
# gem 'unicorn'
|
23
20
|
|
@@ -33,8 +30,8 @@ group :development, :test do
|
|
33
30
|
gem 'byebug'
|
34
31
|
<%- end -%>
|
35
32
|
|
36
|
-
# Access an IRB console on
|
37
|
-
gem 'web-console', '~> 2.0.0.
|
33
|
+
# Access an IRB console on exception pages or by using <%%= console %> in views
|
34
|
+
gem 'web-console', '~> 2.0.0.beta4'
|
38
35
|
<%- if spring_install? %>
|
39
36
|
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
|
40
37
|
gem 'spring'
|
@@ -5,10 +5,11 @@ require 'rails/all'
|
|
5
5
|
<% else -%>
|
6
6
|
# Pick the frameworks you want:
|
7
7
|
require "active_model/railtie"
|
8
|
+
require "active_job/railtie"
|
8
9
|
<%= comment_if :skip_active_record %>require "active_record/railtie"
|
9
10
|
require "action_controller/railtie"
|
10
11
|
require "action_mailer/railtie"
|
11
|
-
|
12
|
+
require "action_view/railtie"
|
12
13
|
<%= comment_if :skip_sprockets %>require "sprockets/railtie"
|
13
14
|
<%= comment_if :skip_test_unit %>require "rails/test_unit/railtie"
|
14
15
|
<% end -%>
|
@@ -32,7 +33,7 @@ module <%= app_const_base %>
|
|
32
33
|
# config.i18n.default_locale = :de
|
33
34
|
<%- unless options.skip_active_record? -%>
|
34
35
|
|
35
|
-
#
|
36
|
+
# Do not swallow errors in after_commit/after_rollback callbacks.
|
36
37
|
config.active_record.raise_in_transactional_callbacks = true
|
37
38
|
<%- end -%>
|
38
39
|
end
|
@@ -30,7 +30,7 @@ Rails.application.configure do
|
|
30
30
|
# number of complex assets.
|
31
31
|
config.assets.debug = true
|
32
32
|
|
33
|
-
# Asset digests allow you to set far-future HTTP expiration dates on all assets,
|
33
|
+
# Asset digests allow you to set far-future HTTP expiration dates on all assets,
|
34
34
|
# yet still be able to expire them through the digest params.
|
35
35
|
config.assets.digest = true
|
36
36
|
|
@@ -16,7 +16,8 @@ Rails.application.configure do
|
|
16
16
|
|
17
17
|
# Enable Rack::Cache to put a simple HTTP cache in front of your application
|
18
18
|
# Add `rack-cache` to your Gemfile before enabling this.
|
19
|
-
# For large-scale production use, consider using a caching reverse proxy like
|
19
|
+
# For large-scale production use, consider using a caching reverse proxy like
|
20
|
+
# NGINX, varnish or squid.
|
20
21
|
# config.action_dispatch.rack_cache = true
|
21
22
|
|
22
23
|
# Disable Rails's static asset server (Apache or NGINX will already do this).
|
@@ -30,7 +31,7 @@ Rails.application.configure do
|
|
30
31
|
# Do not fallback to assets pipeline if a precompiled asset is missed.
|
31
32
|
config.assets.compile = false
|
32
33
|
|
33
|
-
# Asset digests allow you to set far-future HTTP expiration dates on all assets,
|
34
|
+
# Asset digests allow you to set far-future HTTP expiration dates on all assets,
|
34
35
|
# yet still be able to expire them through the digest params.
|
35
36
|
config.assets.digest = true
|
36
37
|
|
@@ -38,14 +39,14 @@ Rails.application.configure do
|
|
38
39
|
<%- end -%>
|
39
40
|
|
40
41
|
# Specifies the header that your server uses for sending files.
|
41
|
-
# config.action_dispatch.x_sendfile_header =
|
42
|
+
# config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
|
42
43
|
# config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
|
43
44
|
|
44
45
|
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
45
46
|
# config.force_ssl = true
|
46
47
|
|
47
|
-
#
|
48
|
-
config.log_level = :
|
48
|
+
# Decrease the log volume.
|
49
|
+
# config.log_level = :info
|
49
50
|
|
50
51
|
# Prepend all log lines with the following tags.
|
51
52
|
# config.log_tags = [ :subdomain, :uuid ]
|
@@ -57,7 +58,7 @@ Rails.application.configure do
|
|
57
58
|
# config.cache_store = :mem_cache_store
|
58
59
|
|
59
60
|
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
60
|
-
# config.action_controller.asset_host =
|
61
|
+
# config.action_controller.asset_host = 'http://assets.example.com'
|
61
62
|
|
62
63
|
# Ignore bad email addresses and do not raise email delivery errors.
|
63
64
|
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
|
@@ -31,6 +31,9 @@ Rails.application.configure do
|
|
31
31
|
# ActionMailer::Base.deliveries array.
|
32
32
|
config.action_mailer.delivery_method = :test
|
33
33
|
|
34
|
+
# Randomize the order test cases are executed
|
35
|
+
config.active_support.test_order = :random
|
36
|
+
|
34
37
|
# Print deprecation notices to the stderr.
|
35
38
|
config.active_support.deprecation = :stderr
|
36
39
|
|
@@ -7,7 +7,7 @@ require 'rails/all'
|
|
7
7
|
<%= comment_if :skip_active_record %>require "active_record/railtie"
|
8
8
|
require "action_controller/railtie"
|
9
9
|
require "action_mailer/railtie"
|
10
|
-
|
10
|
+
require "action_view/railtie"
|
11
11
|
<%= comment_if :skip_sprockets %>require "sprockets/railtie"
|
12
12
|
<%= comment_if :skip_test_unit %>require "rails/test_unit/railtie"
|
13
13
|
<% end -%>
|
@@ -1,7 +1,10 @@
|
|
1
1
|
# Configure Rails Environment
|
2
2
|
ENV["RAILS_ENV"] = "test"
|
3
3
|
|
4
|
-
require File.expand_path("
|
4
|
+
require File.expand_path("../../<%= options[:dummy_path] -%>/config/environment.rb", __FILE__)
|
5
|
+
<% unless options[:skip_active_record] -%>
|
6
|
+
ActiveRecord::Migrator.migrations_paths = [File.expand_path("../../<%= options[:dummy_path] -%>/db/migrate", __FILE__)]
|
7
|
+
<% end -%>
|
5
8
|
require "rails/test_help"
|
6
9
|
|
7
10
|
Rails.backtrace_cleaner.remove_silencers!
|
@@ -10,6 +13,6 @@ Rails.backtrace_cleaner.remove_silencers!
|
|
10
13
|
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
11
14
|
|
12
15
|
# Load fixtures from the engine
|
13
|
-
if ActiveSupport::TestCase.
|
16
|
+
if ActiveSupport::TestCase.respond_to?(:fixture_path=)
|
14
17
|
ActiveSupport::TestCase.fixture_path = File.expand_path("../fixtures", __FILE__)
|
15
18
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'rails/generators/test_unit'
|
2
|
+
|
3
|
+
module TestUnit # :nodoc:
|
4
|
+
module Generators # :nodoc:
|
5
|
+
class JobGenerator < Base # :nodoc:
|
6
|
+
check_class_collision suffix: 'JobTest'
|
7
|
+
|
8
|
+
def create_test_file
|
9
|
+
template 'unit_test.rb.erb', File.join('test/jobs', class_path, "#{file_name}_test.rb")
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/rails/info.rb
CHANGED
@@ -22,17 +22,6 @@ module Rails
|
|
22
22
|
rescue Exception
|
23
23
|
end
|
24
24
|
|
25
|
-
def frameworks
|
26
|
-
%w( active_record action_pack action_view action_mailer active_support active_model )
|
27
|
-
end
|
28
|
-
|
29
|
-
def framework_version(framework)
|
30
|
-
if Object.const_defined?(framework.classify)
|
31
|
-
require "#{framework}/version"
|
32
|
-
framework.classify.constantize.version.to_s
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
25
|
def to_s
|
37
26
|
column_width = properties.names.map {|name| name.length}.max
|
38
27
|
info = properties.map do |name, value|
|
@@ -61,6 +50,11 @@ module Rails
|
|
61
50
|
end
|
62
51
|
end
|
63
52
|
|
53
|
+
# The Rails version.
|
54
|
+
property 'Rails version' do
|
55
|
+
Rails.version.to_s
|
56
|
+
end
|
57
|
+
|
64
58
|
# The Ruby version and platform, e.g. "2.0.0-p247 (x86_64-darwin12.4.0)".
|
65
59
|
property 'Ruby version' do
|
66
60
|
"#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} (#{RUBY_PLATFORM})"
|
@@ -75,23 +69,10 @@ module Rails
|
|
75
69
|
::Rack.release
|
76
70
|
end
|
77
71
|
|
78
|
-
# The Rails version.
|
79
|
-
property 'Rails version' do
|
80
|
-
Rails.version.to_s
|
81
|
-
end
|
82
|
-
|
83
72
|
property 'JavaScript Runtime' do
|
84
73
|
ExecJS.runtime.name
|
85
74
|
end
|
86
75
|
|
87
|
-
# Versions of each Rails framework (Active Record, Action Pack,
|
88
|
-
# Action Mailer, and Active Support).
|
89
|
-
frameworks.each do |framework|
|
90
|
-
property "#{framework.titlecase} version" do
|
91
|
-
framework_version(framework)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
76
|
property 'Middleware' do
|
96
77
|
Rails.configuration.middleware.map(&:inspect)
|
97
78
|
end
|
@@ -4,6 +4,7 @@
|
|
4
4
|
STATS_DIRECTORIES = [
|
5
5
|
%w(Controllers app/controllers),
|
6
6
|
%w(Helpers app/helpers),
|
7
|
+
%w(Jobs app/jobs),
|
7
8
|
%w(Models app/models),
|
8
9
|
%w(Mailers app/mailers),
|
9
10
|
%w(Javascripts app/assets/javascripts),
|
@@ -24,4 +25,4 @@ desc "Report code statistics (KLOCs, etc) from the application or engine"
|
|
24
25
|
task :stats do
|
25
26
|
require 'rails/code_statistics'
|
26
27
|
CodeStatistics.new(*STATS_DIRECTORIES).to_s
|
27
|
-
end
|
28
|
+
end
|
@@ -2,6 +2,10 @@
|
|
2
2
|
<html><head>
|
3
3
|
<meta name="viewport" content="width=device-width" />
|
4
4
|
<style type="text/css">
|
5
|
+
body {
|
6
|
+
margin: 0;
|
7
|
+
}
|
8
|
+
|
5
9
|
header {
|
6
10
|
width: 100%;
|
7
11
|
padding: 10px 0 0 0;
|
@@ -95,4 +99,4 @@
|
|
95
99
|
<iframe seamless name="messageBody" src="?part=<%= Rack::Utils.escape(@part.mime_type) %>"></iframe>
|
96
100
|
|
97
101
|
</body>
|
98
|
-
</html>
|
102
|
+
</html>
|
@@ -19,13 +19,13 @@
|
|
19
19
|
}
|
20
20
|
|
21
21
|
a {color: #03c}
|
22
|
+
|
22
23
|
a:hover {
|
23
24
|
background-color: #03c;
|
24
25
|
color: white;
|
25
26
|
text-decoration: none;
|
26
27
|
}
|
27
28
|
|
28
|
-
|
29
29
|
#page {
|
30
30
|
background-color: #f0f0f0;
|
31
31
|
width: 750px;
|
@@ -57,21 +57,21 @@
|
|
57
57
|
padding-right: 30px;
|
58
58
|
}
|
59
59
|
|
60
|
-
|
61
60
|
#header {
|
62
61
|
background-image: url(data:image/png;base64,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);
|
63
62
|
background-repeat: no-repeat;
|
64
63
|
background-position: top left;
|
65
64
|
height: 64px;
|
66
65
|
}
|
66
|
+
|
67
67
|
#header h1, #header h2 {margin: 0}
|
68
|
+
|
68
69
|
#header h2 {
|
69
70
|
color: #888;
|
70
71
|
font-weight: normal;
|
71
72
|
font-size: 16px;
|
72
73
|
}
|
73
74
|
|
74
|
-
|
75
75
|
#about h3 {
|
76
76
|
margin: 0;
|
77
77
|
margin-bottom: 10px;
|
@@ -84,18 +84,26 @@
|
|
84
84
|
margin-left: -55px;
|
85
85
|
margin-right: -10px;
|
86
86
|
}
|
87
|
+
|
87
88
|
#about-content table {
|
88
89
|
margin-top: 10px;
|
89
90
|
margin-bottom: 10px;
|
90
91
|
font-size: 11px;
|
91
92
|
border-collapse: collapse;
|
92
93
|
}
|
94
|
+
|
93
95
|
#about-content td {
|
94
96
|
padding: 10px;
|
95
97
|
padding-top: 3px;
|
96
98
|
padding-bottom: 3px;
|
97
99
|
}
|
98
|
-
|
100
|
+
|
101
|
+
#about-content td.name {
|
102
|
+
font-weight: bold;
|
103
|
+
vertical-align: top;
|
104
|
+
color: #555;
|
105
|
+
}
|
106
|
+
|
99
107
|
#about-content td.value {color: #000}
|
100
108
|
|
101
109
|
#about-content ul {
|
@@ -107,21 +115,23 @@
|
|
107
115
|
background-color: #fcc;
|
108
116
|
border: 1px solid #f00;
|
109
117
|
}
|
118
|
+
|
110
119
|
#about-content.failure p {
|
111
120
|
margin: 0;
|
112
121
|
padding: 10px;
|
113
122
|
}
|
114
123
|
|
115
|
-
|
116
124
|
#getting-started {
|
117
125
|
border-top: 1px solid #ccc;
|
118
126
|
margin-top: 25px;
|
119
127
|
padding-top: 15px;
|
120
128
|
}
|
129
|
+
|
121
130
|
#getting-started h1 {
|
122
131
|
margin: 0;
|
123
132
|
font-size: 20px;
|
124
133
|
}
|
134
|
+
|
125
135
|
#getting-started h2 {
|
126
136
|
margin: 0;
|
127
137
|
font-size: 14px;
|
@@ -129,40 +139,46 @@
|
|
129
139
|
color: #333;
|
130
140
|
margin-bottom: 25px;
|
131
141
|
}
|
142
|
+
|
132
143
|
#getting-started ol {
|
133
144
|
margin-left: 0;
|
134
145
|
padding-left: 0;
|
135
146
|
}
|
147
|
+
|
136
148
|
#getting-started li {
|
137
149
|
font-size: 18px;
|
138
150
|
color: #888;
|
139
151
|
margin-bottom: 25px;
|
140
152
|
}
|
153
|
+
|
141
154
|
#getting-started li h2 {
|
142
155
|
margin: 0;
|
143
156
|
font-weight: normal;
|
144
157
|
font-size: 18px;
|
145
158
|
color: #333;
|
146
159
|
}
|
160
|
+
|
147
161
|
#getting-started li p {
|
148
162
|
color: #555;
|
149
163
|
font-size: 13px;
|
150
164
|
}
|
151
165
|
|
152
|
-
|
153
166
|
#sidebar ul {
|
154
167
|
margin-left: 0;
|
155
168
|
padding-left: 0;
|
156
169
|
}
|
170
|
+
|
157
171
|
#sidebar ul h3 {
|
158
172
|
margin-top: 25px;
|
159
173
|
font-size: 16px;
|
160
174
|
padding-bottom: 10px;
|
161
175
|
border-bottom: 1px solid #ccc;
|
162
176
|
}
|
177
|
+
|
163
178
|
#sidebar li {
|
164
179
|
list-style-type: none;
|
165
180
|
}
|
181
|
+
|
166
182
|
#sidebar ul.links li {
|
167
183
|
margin-bottom: 5px;
|
168
184
|
}
|
@@ -3,7 +3,7 @@ require 'rails/test_unit/sub_test_task'
|
|
3
3
|
|
4
4
|
task default: :test
|
5
5
|
|
6
|
-
desc 'Runs test:units, test:functionals, test:generators, test:integration together'
|
6
|
+
desc 'Runs test:units, test:functionals, test:generators, test:integration, test:jobs together'
|
7
7
|
task :test do
|
8
8
|
Rails::TestTask.test_creator(Rake.application.top_level_tasks).invoke_rake_task
|
9
9
|
end
|
@@ -13,7 +13,7 @@ namespace :test do
|
|
13
13
|
# Placeholder task for other Railtie and plugins to enhance. See Active Record for an example.
|
14
14
|
end
|
15
15
|
|
16
|
-
task :run => ['test:units', 'test:functionals', 'test:generators', 'test:integration']
|
16
|
+
task :run => ['test:units', 'test:functionals', 'test:generators', 'test:integration', 'test:jobs']
|
17
17
|
|
18
18
|
# Inspired by: http://ngauthier.com/2012/02/quick-tests-with-bash.html
|
19
19
|
desc "Run tests quickly by merging all types and not resetting db"
|
@@ -28,7 +28,7 @@ namespace :test do
|
|
28
28
|
|
29
29
|
Rails::TestTask.new(single: "test:prepare")
|
30
30
|
|
31
|
-
["models", "helpers", "controllers", "mailers", "integration"].each do |name|
|
31
|
+
["models", "helpers", "controllers", "mailers", "integration", "jobs"].each do |name|
|
32
32
|
Rails::TestTask.new(name => "test:prepare") do |t|
|
33
33
|
t.pattern = "test/#{name}/**/*_test.rb"
|
34
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: railties
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.2.0.
|
4
|
+
version: 4.2.0.beta2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-09-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 4.2.0.
|
19
|
+
version: 4.2.0.beta2
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 4.2.0.
|
26
|
+
version: 4.2.0.beta2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: actionpack
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 4.2.0.
|
33
|
+
version: 4.2.0.beta2
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 4.2.0.
|
40
|
+
version: 4.2.0.beta2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,14 +78,14 @@ dependencies:
|
|
78
78
|
requirements:
|
79
79
|
- - '='
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: 4.2.0.
|
81
|
+
version: 4.2.0.beta2
|
82
82
|
type: :development
|
83
83
|
prerelease: false
|
84
84
|
version_requirements: !ruby/object:Gem::Requirement
|
85
85
|
requirements:
|
86
86
|
- - '='
|
87
87
|
- !ruby/object:Gem::Version
|
88
|
-
version: 4.2.0.
|
88
|
+
version: 4.2.0.beta2
|
89
89
|
description: 'Rails internals: application bootup, plugins, generators, and rake tasks.'
|
90
90
|
email: david@loudthinking.com
|
91
91
|
executables:
|
@@ -280,6 +280,8 @@ files:
|
|
280
280
|
- lib/rails/generators/test_unit/helper/helper_generator.rb
|
281
281
|
- lib/rails/generators/test_unit/integration/integration_generator.rb
|
282
282
|
- lib/rails/generators/test_unit/integration/templates/integration_test.rb
|
283
|
+
- lib/rails/generators/test_unit/job/job_generator.rb
|
284
|
+
- lib/rails/generators/test_unit/job/templates/unit_test.rb.erb
|
283
285
|
- lib/rails/generators/test_unit/mailer/mailer_generator.rb
|
284
286
|
- lib/rails/generators/test_unit/mailer/templates/functional_test.rb
|
285
287
|
- lib/rails/generators/test_unit/mailer/templates/preview.rb
|