mirror of https://github.com/rails/rails
adds --skip-listen to the application generator [closes #23590]
This commit is contained in:
parent
5971fddb79
commit
94dbc48887
|
@ -1,3 +1,7 @@
|
||||||
|
* The application generator supports `--skip-listen` to opt-out of features
|
||||||
|
that depend on the listen gem. As of this writing they are the evented file
|
||||||
|
system monitor and the async plugin for spring.
|
||||||
|
|
||||||
* The Gemfiles of new applications include spring-watcher-listen on Linux and
|
* The Gemfiles of new applications include spring-watcher-listen on Linux and
|
||||||
Mac OS X (unless --skip-spring).
|
Mac OS X (unless --skip-spring).
|
||||||
|
|
||||||
|
|
|
@ -63,6 +63,9 @@ module Rails
|
||||||
class_option :skip_spring, type: :boolean, default: false,
|
class_option :skip_spring, type: :boolean, default: false,
|
||||||
desc: "Don't install Spring application preloader"
|
desc: "Don't install Spring application preloader"
|
||||||
|
|
||||||
|
class_option :skip_listen, type: :boolean, default: false,
|
||||||
|
desc: "Don't generate configuration that depends on the listen gem"
|
||||||
|
|
||||||
class_option :skip_javascript, type: :boolean, aliases: '-J', default: false,
|
class_option :skip_javascript, type: :boolean, aliases: '-J', default: false,
|
||||||
desc: 'Skip JavaScript files'
|
desc: 'Skip JavaScript files'
|
||||||
|
|
||||||
|
@ -390,6 +393,10 @@ module Rails
|
||||||
!options[:skip_spring] && !options.dev? && Process.respond_to?(:fork) && !RUBY_PLATFORM.include?("cygwin")
|
!options[:skip_spring] && !options.dev? && Process.respond_to?(:fork) && !RUBY_PLATFORM.include?("cygwin")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def depend_on_listen?
|
||||||
|
!options[:skip_listen] && os_supports_listen_out_of_the_box?
|
||||||
|
end
|
||||||
|
|
||||||
def os_supports_listen_out_of_the_box?
|
def os_supports_listen_out_of_the_box?
|
||||||
RbConfig::CONFIG['host_os'] =~ /darwin|linux/
|
RbConfig::CONFIG['host_os'] =~ /darwin|linux/
|
||||||
end
|
end
|
||||||
|
|
|
@ -38,13 +38,13 @@ group :development do
|
||||||
gem 'web-console', '~> 3.0'
|
gem 'web-console', '~> 3.0'
|
||||||
<%- end -%>
|
<%- end -%>
|
||||||
<%- end -%>
|
<%- end -%>
|
||||||
<% if os_supports_listen_out_of_the_box? -%>
|
<% if depend_on_listen? -%>
|
||||||
gem 'listen', '~> 3.0.5'
|
gem 'listen', '~> 3.0.5'
|
||||||
<% end -%>
|
<% end -%>
|
||||||
<% if spring_install? -%>
|
<% if spring_install? -%>
|
||||||
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
|
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
|
||||||
gem 'spring'
|
gem 'spring'
|
||||||
<% if os_supports_listen_out_of_the_box? -%>
|
<% if depend_on_listen? -%>
|
||||||
gem 'spring-watcher-listen', '~> 2.0.0'
|
gem 'spring-watcher-listen', '~> 2.0.0'
|
||||||
<% end -%>
|
<% end -%>
|
||||||
<% end -%>
|
<% end -%>
|
||||||
|
|
|
@ -58,5 +58,5 @@ Rails.application.configure do
|
||||||
|
|
||||||
# Use an evented file watcher to asynchronously detect changes in source code,
|
# Use an evented file watcher to asynchronously detect changes in source code,
|
||||||
# routes, locales, etc. This feature depends on the listen gem.
|
# routes, locales, etc. This feature depends on the listen gem.
|
||||||
<%= '# ' unless os_supports_listen_out_of_the_box? %>config.file_watcher = ActiveSupport::EventedFileUpdateChecker
|
<%= '# ' unless depend_on_listen? %>config.file_watcher = ActiveSupport::EventedFileUpdateChecker
|
||||||
end
|
end
|
||||||
|
|
|
@ -479,18 +479,20 @@ class AppGeneratorTest < Rails::Generators::TestCase
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_inclusion_of_listen_related_gems
|
def test_inclusion_of_listen_related_configuration_by_default
|
||||||
run_generator
|
run_generator
|
||||||
if RbConfig::CONFIG['host_os'] =~ /darwin|linux/
|
if RbConfig::CONFIG['host_os'] =~ /darwin|linux/
|
||||||
assert_gem 'listen'
|
assert_listen_related_configuration
|
||||||
assert_gem 'spring-watcher-listen'
|
|
||||||
else
|
else
|
||||||
assert_file 'Gemfile' do |content|
|
assert_no_listen_related_configuration
|
||||||
assert_no_match(/listen/, content)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_non_inclusion_of_listen_related_configuration_if_skip_listen
|
||||||
|
run_generator [destination_root, '--skip-listen']
|
||||||
|
assert_no_listen_related_configuration
|
||||||
|
end
|
||||||
|
|
||||||
def test_evented_file_update_checker_config
|
def test_evented_file_update_checker_config
|
||||||
run_generator
|
run_generator
|
||||||
assert_file 'config/environments/development.rb' do |content|
|
assert_file 'config/environments/development.rb' do |content|
|
||||||
|
@ -759,4 +761,23 @@ class AppGeneratorTest < Rails::Generators::TestCase
|
||||||
assert_file "Gemfile", /^\s*gem\s+["']#{gem}["']$*/
|
assert_file "Gemfile", /^\s*gem\s+["']#{gem}["']$*/
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def assert_listen_related_configuration
|
||||||
|
assert_gem 'listen'
|
||||||
|
assert_gem 'spring-watcher-listen'
|
||||||
|
|
||||||
|
assert_file 'config/environments/development.rb' do |content|
|
||||||
|
assert_match(/^\s*config.file_watcher = ActiveSupport::EventedFileUpdateChecker/, content)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def assert_no_listen_related_configuration
|
||||||
|
assert_file 'Gemfile' do |content|
|
||||||
|
assert_no_match(/listen/, content)
|
||||||
|
end
|
||||||
|
|
||||||
|
assert_file 'config/environments/development.rb' do |content|
|
||||||
|
assert_match(/^\s*# config.file_watcher = ActiveSupport::EventedFileUpdateChecker/, content)
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -154,8 +154,6 @@ module TestHelpers
|
||||||
config.action_controller.allow_forgery_protection = false
|
config.action_controller.allow_forgery_protection = false
|
||||||
config.log_level = :info
|
config.log_level = :info
|
||||||
RUBY
|
RUBY
|
||||||
|
|
||||||
remove_from_env_config('development', 'config.file_watcher.*')
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def teardown_app
|
def teardown_app
|
||||||
|
@ -328,7 +326,6 @@ class ActiveSupport::TestCase
|
||||||
include ActiveSupport::Testing::Stream
|
include ActiveSupport::Testing::Stream
|
||||||
|
|
||||||
self.test_order = :sorted
|
self.test_order = :sorted
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Create a scope and build a fixture rails app
|
# Create a scope and build a fixture rails app
|
||||||
|
@ -342,7 +339,7 @@ Module.new do
|
||||||
environment = File.expand_path('../../../../load_paths', __FILE__)
|
environment = File.expand_path('../../../../load_paths', __FILE__)
|
||||||
require_environment = "-r #{environment}"
|
require_environment = "-r #{environment}"
|
||||||
|
|
||||||
`#{Gem.ruby} #{require_environment} #{RAILS_FRAMEWORK_ROOT}/railties/exe/rails new #{app_template_path} --skip-gemfile --no-rc`
|
`#{Gem.ruby} #{require_environment} #{RAILS_FRAMEWORK_ROOT}/railties/exe/rails new #{app_template_path} --skip-gemfile --skip-listen --no-rc`
|
||||||
File.open("#{app_template_path}/config/boot.rb", 'w') do |f|
|
File.open("#{app_template_path}/config/boot.rb", 'w') do |f|
|
||||||
f.puts "require '#{environment}'"
|
f.puts "require '#{environment}'"
|
||||||
f.puts "require 'rails/all'"
|
f.puts "require 'rails/all'"
|
||||||
|
|
Loading…
Reference in New Issue