diff options
author | Samuel Giddins <segiddins@segiddins.me> | 2016-02-22 21:10:00 -0600 |
---|---|---|
committer | Samuel Giddins <segiddins@segiddins.me> | 2016-02-22 21:10:00 -0600 |
commit | b12a5a7eebab3fa31d763c77882cda703dc287ce (patch) | |
tree | 409fbe9ef601aadcd74f25841642872cfe605a7b | |
parent | a956ebe4c86757441f6767b9e6eb5e728f040f36 (diff) | |
download | bundler-b12a5a7eebab3fa31d763c77882cda703dc287ce.tar.gz |
[Exec] Improve performance when checking for a ruby shebang
-rw-r--r-- | lib/bundler/cli/exec.rb | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/lib/bundler/cli/exec.rb b/lib/bundler/cli/exec.rb index 095b7b79a8..4f304975ce 100644 --- a/lib/bundler/cli/exec.rb +++ b/lib/bundler/cli/exec.rb @@ -71,8 +71,12 @@ module Bundler end def ruby_shebang?(file) - first_line = File.open(file, "rb", &:readline) - first_line == "#!/usr/bin/env ruby\n" || first_line == "#!#{Gem.ruby}\n" + possibilities = [ + "#!/usr/bin/env ruby\n", + "#!#{Gem.ruby}\n", + ] + first_line = File.read(file, possibilities.map(&:size).max, :mode => "rb") + possibilities.any? {|shebang| first_line.start_with?(shebang) } end end end |