summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2016-02-22 21:10:00 -0600
committerSamuel Giddins <segiddins@segiddins.me>2016-02-22 21:10:00 -0600
commitb12a5a7eebab3fa31d763c77882cda703dc287ce (patch)
tree409fbe9ef601aadcd74f25841642872cfe605a7b
parenta956ebe4c86757441f6767b9e6eb5e728f040f36 (diff)
downloadbundler-b12a5a7eebab3fa31d763c77882cda703dc287ce.tar.gz
[Exec] Improve performance when checking for a ruby shebang
-rw-r--r--lib/bundler/cli/exec.rb8
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