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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c0d9bf17864297c9b28a27acd144798174e32f3d
4
- data.tar.gz: a04fb2115bb4aae2ac18005d73a86caeb221bc81
3
+ metadata.gz: 040345e0c4130763671600ad48ad1870391eb869
4
+ data.tar.gz: 21438b89e2f4b41f4aa5e6ca7dff78fb70eca00d
5
5
  SHA512:
6
- metadata.gz: f66532d7ad29f2255e25d702302f928e6c3ada2c8d11296dda01191c7e530c6c84db24814fcd6e9d6035bc8dc09fb7ca4fc42301b95bbff7a2bd1d63ba3d4ef3
7
- data.tar.gz: 1281dfa40646aa90b0af2954602909be4d361157e74ff55aa396f34ce8be8165e5b3d4f88a991d9800d55faeb5338f4a4c523a17cbff8bbb93c50f1c499c0aa0
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 spawnig an interactive console in its cause
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
- MyApp::Application.configure do
82
+ Rails.application.configure do
53
83
  config.middleware.use ExceptionNotifier, config_for(:exception_notification)
54
84
  end
55
85
 
@@ -217,7 +217,7 @@ module Rails
217
217
  # namespace: my_app_development
218
218
  #
219
219
  # # config/production.rb
220
- # MyApp::Application.configure do
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
- (ordered_railties & railties_without_main_app).reverse
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.reverse.flatten
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 chmod 0666. " +
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
- yaml = Pathname.new(paths["config/database"].existent.first || "")
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 - #{yaml}"
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 ||= Rails.env.production? ? :info : :debug
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? ? config.cache_classes : config.allow_concurrency
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", 'Enable the debugger.') do |v|
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 ruby 2.0 and " \
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, etc] [options]"
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=ip", String,
27
- "Binds Rails to the specified ip.", "Default: 0.0.0.0") { |v| options[:Host] = v }
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
- "Use custom rackup configuration file") { |v| options[:config] = v }
30
- opts.on("-d", "--daemon", "Make server run as a Daemon.") { options[:daemonize] = true }
31
- opts.on("-u", "--debugger", "Enable the debugger") do
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 ruby 2.0 and " \
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", "Show this help message.") { puts opts; exit }
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
 
@@ -8,7 +8,7 @@ module Rails
8
8
  MAJOR = 4
9
9
  MINOR = 2
10
10
  TINY = 0
11
- PRE = "beta1"
11
+ PRE = "beta2"
12
12
 
13
13
  STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
14
14
  end
@@ -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(str)
272
- if str.include?("'")
273
- str.inspect
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
- "'#{str}'"
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[:skip_action_view] && !options[:skip_test_unit] && !options[:skip_sprockets]
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
- gems << GemfileEntry.version("#{options[:javascript]}-rails", nil,
285
- "Use #{options[:javascript]} as the JavaScript library")
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 exceptions page and /console in development
37
- gem 'web-console', '~> 2.0.0.beta2'
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
- <%= comment_if :skip_action_view %>require "action_view/railtie"
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
- # For not swallow errors in after_commit/after_rollback callbacks.
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 NGINX, varnish or squid.
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 = "X-Sendfile" # for Apache
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
- # Set to :info to decrease the log volume.
48
- config.log_level = :debug
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 = "http://assets.example.com"
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
 
@@ -46,7 +46,6 @@ Available field types:
46
46
  date
47
47
  time
48
48
  datetime
49
- timestamp
50
49
 
51
50
  You can also consider `references` as a kind of type. For instance, if you run:
52
51
 
@@ -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
- <%= comment_if :skip_action_view %>require "action_view/railtie"
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("../dummy/config/environment.rb", __FILE__)
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.method_defined?(:fixture_path=)
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
@@ -0,0 +1,9 @@
1
+ require 'test_helper'
2
+
3
+ <% module_namespacing do -%>
4
+ class <%= class_name %>JobTest < ActiveJob::TestCase
5
+ # test "the truth" do
6
+ # assert true
7
+ # end
8
+ end
9
+ <% 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
- #about-content td.name {color: #555}
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.beta1
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-08-20 00:00:00.000000000 Z
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.beta1
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.beta1
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.beta1
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.beta1
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.beta1
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.beta1
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