aboutsummaryrefslogtreecommitdiffstats
path: root/railties
diff options
context:
space:
mode:
authorMax Holder <mxhold@gmail.com>2015-03-20 14:00:17 -0400
committerMax Holder <mxhold@gmail.com>2015-03-28 09:16:13 -0400
commit2a5bb9d56e785e8b8f70c24621d469c473c9061a (patch)
treee3f1f7672ef9f66e08f7f1f71023ded0e87013e8 /railties
parent3064533076c83517c7297adeea473fe52f0bb454 (diff)
downloadrails-2a5bb9d56e785e8b8f70c24621d469c473c9061a.tar.gz
rails-2a5bb9d56e785e8b8f70c24621d469c473c9061a.tar.bz2
rails-2a5bb9d56e785e8b8f70c24621d469c473c9061a.zip
Print `bundle install` output in `rails new` as soon as it's available
Previously, running `rails new` would not print any of the output from `bundle install` until all the gems had finished installing. This made it look like the generator was hanging at the `bundle install` step. This commit switches to using `system` so that the bundle command can output as it needs to. This has the added benefit of including output bundler produces on standard error, which the previous code ignored since backticks only capture standard out. This is not a big deal right now since bundler does not currently print errors to standard error, but that may change in the future (see: bundler/bundler/issues/3353).
Diffstat (limited to 'railties')
-rw-r--r--railties/CHANGELOG.md7
-rw-r--r--railties/lib/rails/generators/app_base.rb12
2 files changed, 13 insertions, 6 deletions
diff --git a/railties/CHANGELOG.md b/railties/CHANGELOG.md
index 595a50dbdc..b4ad3be8f9 100644
--- a/railties/CHANGELOG.md
+++ b/railties/CHANGELOG.md
@@ -1,3 +1,10 @@
+* Print `bundle install` output in `rails new` as soon as it's available
+
+ Running `rails new` will now print the output of `bundle install` as
+ it is available, instead of waiting until all gems finish installing.
+
+ *Max Holder*
+
* Add a new-line to the end of route method generated code.
We need to add a `\n`, because we cannot have two routes
diff --git a/railties/lib/rails/generators/app_base.rb b/railties/lib/rails/generators/app_base.rb
index 813f8b21fd..10deeb0ba2 100644
--- a/railties/lib/rails/generators/app_base.rb
+++ b/railties/lib/rails/generators/app_base.rb
@@ -315,10 +315,6 @@ module Rails
# its own vendored Thor, which could be a different version. Running both
# things in the same process is a recipe for a night with paracetamol.
#
- # We use backticks and #print here instead of vanilla #system because it
- # is easier to silence stdout in the existing test suite this way. The
- # end-user gets the bundler commands called anyway, so no big deal.
- #
# We unset temporary bundler variables to load proper bundler and Gemfile.
#
# Thanks to James Tucker for the Gem tricks involved in this call.
@@ -326,8 +322,12 @@ module Rails
require 'bundler'
Bundler.with_clean_env do
- output = `"#{Gem.ruby}" "#{_bundle_command}" #{command}`
- print output unless options[:quiet]
+ full_command = %Q["#{Gem.ruby}" "#{_bundle_command}" #{command}]
+ if options[:quiet]
+ system(full_command, out: File::NULL)
+ else
+ system(full_command)
+ end
end
end