提交 b6f50b3f 编写于 作者: C claudiob

Add --skip-action-mailer (or -M) to rails generate

上级 4ba0e2fc
* Add `--skip-action-mailer` option to the app generator.
*claudiob*
* Autoload any second level directories called `app/*/concerns`.
*Alex Robbin*
......
......@@ -38,6 +38,10 @@ def self.add_shared_options_for(name)
class_option :skip_keeps, type: :boolean, default: false,
desc: 'Skip source control .keep files'
class_option :skip_action_mailer, type: :boolean, aliases: "-M",
default: false,
desc: "Skip Action Mailer files"
class_option :skip_active_record, type: :boolean, aliases: '-O', default: false,
desc: 'Skip Active Record files'
......@@ -164,7 +168,7 @@ def database_gemfile_entry
end
def include_all_railties?
!options[:skip_active_record] && !options[:skip_test_unit] && !options[:skip_sprockets]
options.values_at(:skip_active_record, :skip_action_mailer, :skip_test_unit, :skip_sprockets).none?
end
def comment_if(value)
......
......@@ -8,7 +8,7 @@
require "active_job/railtie"
<%= comment_if :skip_active_record %>require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
<%= comment_if :skip_action_mailer %>require "action_mailer/railtie"
require "action_view/railtie"
<%= comment_if :skip_sprockets %>require "sprockets/railtie"
<%= comment_if :skip_test_unit %>require "rails/test_unit/railtie"
......
......@@ -12,9 +12,11 @@ Rails.application.configure do
# Show full error reports and disable caching.
config.consider_all_requests_local = true
config.action_controller.perform_caching = false
<%- unless options.skip_action_mailer? -%>
# Don't care if the mailer can't send.
config.action_mailer.raise_delivery_errors = false
<%- end -%>
# Print deprecation notices to the Rails logger.
config.active_support.deprecation = :log
......
......@@ -61,10 +61,12 @@ Rails.application.configure do
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
# config.action_controller.asset_host = 'http://assets.example.com'
<%- unless options.skip_action_mailer? -%>
# Ignore bad email addresses and do not raise email delivery errors.
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
# config.action_mailer.raise_delivery_errors = false
<%- end -%>
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
# the I18n.default_locale when a translation cannot be found).
......
......@@ -25,11 +25,13 @@ Rails.application.configure do
# Disable request forgery protection in test environment.
config.action_controller.allow_forgery_protection = false
<%- unless options.skip_action_mailer? -%>
# Tell Action Mailer not to deliver emails to the real world.
# The :test delivery method accumulates sent emails in the
# ActionMailer::Base.deliveries array.
config.action_mailer.delivery_method = :test
<%- end -%>
# Randomize the order test cases are executed.
config.active_support.test_order = :random
......
......@@ -74,7 +74,8 @@ def test
end
PASSTHROUGH_OPTIONS = [
:skip_active_record, :skip_javascript, :database, :javascript, :quiet, :pretend, :force, :skip
:skip_active_record, :skip_action_mailer, :skip_javascript, :database,
:javascript, :quiet, :pretend, :force, :skip
]
def generate_test_dummy(force = false)
......
......@@ -6,7 +6,7 @@
# Pick the frameworks you want:
<%= comment_if :skip_active_record %>require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
<%= comment_if :skip_action_mailer %>require "action_mailer/railtie"
require "action_view/railtie"
<%= comment_if :skip_sprockets %>require "sprockets/railtie"
<%= comment_if :skip_test_unit %>require "rails/test_unit/railtie"
......
......@@ -259,6 +259,20 @@ def test_config_jdbc_database_when_no_option_given
end
end
def test_generator_without_skips
run_generator
assert_file "config/application.rb", /\s+require\s+["']rails\/all["']/
assert_file "config/environments/development.rb" do |content|
assert_match(/config\.action_mailer\.raise_delivery_errors = false/, content)
end
assert_file "config/environments/test.rb" do |content|
assert_match(/config\.action_mailer\.delivery_method = :test/, content)
end
assert_file "config/environments/production.rb" do |content|
assert_match(/# config\.action_mailer\.raise_delivery_errors = false/, content)
end
end
def test_generator_if_skip_active_record_is_given
run_generator [destination_root, "--skip-active-record"]
assert_no_file "config/database.yml"
......@@ -268,6 +282,20 @@ def test_generator_if_skip_active_record_is_given
end
end
def test_generator_if_skip_action_mailer_is_given
run_generator [destination_root, "--skip-action-mailer"]
assert_file "config/application.rb", /#\s+require\s+["']action_mailer\/railtie["']/
assert_file "config/environments/development.rb" do |content|
assert_no_match(/config\.action_mailer/, content)
end
assert_file "config/environments/test.rb" do |content|
assert_no_match(/config\.action_mailer/, content)
end
assert_file "config/environments/production.rb" do |content|
assert_no_match(/config\.action_mailer/, content)
end
end
def test_generator_if_skip_sprockets_is_given
run_generator [destination_root, "--skip-sprockets"]
assert_no_file "config/initializers/assets.rb"
......
......@@ -140,6 +140,20 @@ def test_dont_generate_development_dependency
end
end
def test_app_generator_without_skips
run_generator
assert_file "test/dummy/config/application.rb", /\s+require\s+["']rails\/all["']/
assert_file "test/dummy/config/environments/development.rb" do |content|
assert_match(/config\.action_mailer\.raise_delivery_errors = false/, content)
end
assert_file "test/dummy/config/environments/test.rb" do |content|
assert_match(/config\.action_mailer\.delivery_method = :test/, content)
end
assert_file "test/dummy/config/environments/production.rb" do |content|
assert_match(/# config\.action_mailer\.raise_delivery_errors = false/, content)
end
end
def test_active_record_is_removed_from_frameworks_if_skip_active_record_is_given
run_generator [destination_root, "--skip-active-record"]
assert_file "test/dummy/config/application.rb", /#\s+require\s+["']active_record\/railtie["']/
......@@ -153,6 +167,20 @@ def test_ensure_that_skip_active_record_option_is_passed_to_app_generator
end
end
def test_action_mailer_is_removed_from_frameworks_if_skip_action_mailer_is_given
run_generator [destination_root, "--skip-action-mailer"]
assert_file "test/dummy/config/application.rb", /#\s+require\s+["']action_mailer\/railtie["']/
assert_file "test/dummy/config/environments/development.rb" do |content|
assert_no_match(/config\.action_mailer/, content)
end
assert_file "test/dummy/config/environments/test.rb" do |content|
assert_no_match(/config\.action_mailer/, content)
end
assert_file "test/dummy/config/environments/production.rb" do |content|
assert_no_match(/config\.action_mailer/, content)
end
end
def test_ensure_that_database_option_is_passed_to_app_generator
run_generator [destination_root, "--database", "postgresql"]
assert_file "test/dummy/config/database.yml", /postgres/
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册