diff --git a/scanner/rails.go b/scanner/rails.go index 6e0fa99f80..7f2a9a56e8 100644 --- a/scanner/rails.go +++ b/scanner/rails.go @@ -59,18 +59,6 @@ func configureRails(sourceDir string, config *ScannerConfig) (*SourceInfo, error } } - // attempt to install bundle before proceeding - args := []string{"install"} - - if checksPass(sourceDir, fileExists("Gemfile.lock")) { - args = append(args, "--quiet") - } - - cmd := exec.Command(bundle, args...) - cmd.Stdin = nil - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - s := &SourceInfo{ Family: "Rails", Callback: RailsCallback, @@ -356,17 +344,7 @@ func RailsCallback(appName string, srcInfo *SourceInfo, plan *plan.LaunchPlan, f if pendingError != nil { pendingError = errors.Wrap(pendingError, "Failed to add dockerfile-rails gem") } else { - cmd = exec.Command(bundle, "install", "--quiet") - cmd.Stdin = nil - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - - pendingError = cmd.Run() - if pendingError != nil { - pendingError = errors.Wrap(pendingError, "Failed to install dockerfile-rails gem") - } else { - generatorInstalled = true - } + generatorInstalled = true } } } else { @@ -374,6 +352,16 @@ func RailsCallback(appName string, srcInfo *SourceInfo, plan *plan.LaunchPlan, f generatorInstalled = true } + cmd := exec.Command(bundle, "install", "--quiet") + cmd.Stdin = nil + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + + err = cmd.Run() + if err != nil { + return errors.Wrap(err, "Failed to install bundle, exiting") + } + // ensure Gemfile.lock includes the x86_64-linux platform if out, err := exec.Command(bundle, "platform").Output(); err == nil { if !strings.Contains(string(out), "x86_64-linux") {