diff --git a/lib/jekyll/commands/new.rb b/lib/jekyll/commands/new.rb index b8539b10..cee16687 100644 --- a/lib/jekyll/commands/new.rb +++ b/lib/jekyll/commands/new.rb @@ -139,9 +139,11 @@ module Jekyll def after_install(path, options = {}) unless options["blank"] || options["skip-bundle"] begin - require "bundler" + # Activate 'bundler' gem and puts it into the `loaded_specs`. + # For details: https://rubydocs.org/d/ruby-2-4-0/classes/Kernel.html#method-i-gem + gem "bundler" bundle_install path - rescue LoadError + rescue Gem::MissingSpecError Jekyll.logger.info "Could not load Bundler. Bundle install skipped." end end @@ -153,8 +155,10 @@ module Jekyll def bundle_install(path) Jekyll.logger.info "Running bundle install in #{path.cyan}..." Dir.chdir(path) do - exe = Gem.bin_path("bundler", "bundle") - process, output = Jekyll::Utils::Exec.run("ruby", exe, "install") + bundler_gemspec = Gem.loaded_specs["bundler"] + exe = bundler_gemspec.bin_file "bundle" + require_paths = bundler_gemspec.full_require_paths + process, output = Jekyll::Utils::Exec.run("ruby", "-I", *require_paths, exe, "install") output.to_s.each_line do |line| Jekyll.logger.info("Bundler:".green, line.strip) unless line.to_s.empty?