railties 4.2.0.beta1 → 4.2.0.beta2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|