diff options
author | Max Holder <mxhold@gmail.com> | 2015-03-20 14:00:17 -0400 |
---|---|---|
committer | Max Holder <mxhold@gmail.com> | 2015-03-28 09:16:13 -0400 |
commit | 2a5bb9d56e785e8b8f70c24621d469c473c9061a (patch) | |
tree | e3f1f7672ef9f66e08f7f1f71023ded0e87013e8 /railties | |
parent | 3064533076c83517c7297adeea473fe52f0bb454 (diff) | |
download | rails-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.md | 7 | ||||
-rw-r--r-- | railties/lib/rails/generators/app_base.rb | 12 |
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 |