Skip to content

Commit ce2fc70

Browse files
authored
Merge pull request rails#31485 from y-yagi/skip_bootsnap_option
Add `skip_bootsnap` option
2 parents 6553c7f + 838b40d commit ce2fc70

File tree

4 files changed

+31
-0
lines changed

4 files changed

+31
-0
lines changed

railties/lib/rails/generators/app_base.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,9 @@ def self.add_shared_options_for(name)
8484
class_option :skip_system_test, type: :boolean, default: false,
8585
desc: "Skip system test files"
8686

87+
class_option :skip_bootsnap, type: :boolean, default: false,
88+
desc: "Skip bootsnap gem"
89+
8790
class_option :dev, type: :boolean, default: false,
8891
desc: "Setup the #{name} with Gemfile pointing to your Rails checkout"
8992

@@ -435,6 +438,10 @@ def depend_on_listen?
435438
!options[:skip_listen] && os_supports_listen_out_of_the_box?
436439
end
437440

441+
def depend_on_bootsnap?
442+
!options[:skip_bootsnap]
443+
end
444+
438445
def os_supports_listen_out_of_the_box?
439446
RbConfig::CONFIG["host_os"] =~ /darwin|linux/
440447
end

railties/lib/rails/generators/rails/app/templates/Gemfile.tt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,11 @@ ruby <%= "'#{RUBY_VERSION}'" -%>
2929
# Use Capistrano for deployment
3030
# gem 'capistrano-rails', group: :development
3131

32+
<% if depend_on_bootsnap? -%>
3233
# Reduces boot times through caching; required in config/boot.rb
3334
gem 'bootsnap', '>= 1.1.0', require: false
3435

36+
<%- end -%>
3537
<%- if options.api? -%>
3638
# Use Rack CORS for handling Cross-Origin Resource Sharing (CORS), making cross-origin AJAX possible
3739
# gem 'rack-cors'

railties/lib/rails/generators/rails/app/templates/config/boot.rb.tt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
22

33
require 'bundler/setup' # Set up gems listed in the Gemfile.
4+
<% if depend_on_bootsnap? -%>
45
require 'bootsnap/setup' # Speed up boot time by caching expensive operations.
6+
<%- end -%>
57

68
if %w[s server c console].any? { |a| ARGV.include?(a) }
79
puts "=> Booting Rails"

railties/test/generators/app_generator_test.rb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -792,6 +792,26 @@ def test_generator_if_skip_turbolinks_is_given
792792
end
793793
end
794794

795+
def test_bootsnap
796+
run_generator
797+
798+
assert_gem "bootsnap"
799+
assert_file "config/boot.rb" do |content|
800+
assert_match(/require 'bootsnap\/setup'/, content)
801+
end
802+
end
803+
804+
def test_skip_bootsnap
805+
run_generator [destination_root, "--skip-bootsnap"]
806+
807+
assert_file "Gemfile" do |content|
808+
assert_no_match(/bootsnap/, content)
809+
end
810+
assert_file "config/boot.rb" do |content|
811+
assert_no_match(/require 'bootsnap\/setup'/, content)
812+
end
813+
end
814+
795815
def test_inclusion_of_ruby_version
796816
run_generator
797817

0 commit comments

Comments
 (0)