Skip to content

Commit

Permalink
Use binstubs without Rubocop auto-correction
Browse files Browse the repository at this point in the history
Rubocop auto-correction breaks some binstubs. See: rubocop/rubocop-rails#104 and https://github.com/sul-dlss/argo/pull/1585/files

This is preventing Puma from running in containerland.
  • Loading branch information
mjgiarlo committed Apr 9, 2020
1 parent 497403c commit d25648c
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 63 deletions.
25 changes: 1 addition & 24 deletions .rubocop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,37 +8,14 @@ require:
AllCops:
TargetRubyVersion: 2.4
Exclude:
- 'bin/*' # these are auto-generated (bundler binstubs)
- 'vendor/**/*'
- 'spec/fixtures/**/*'

Metrics/BlockLength:
Exclude:
- 'spec/**/*.rb'

Metrics/MethodLength:
Exclude:
- 'bin/bundle'

Metrics/CyclomaticComplexity:
Exclude:
- 'bin/bundle'

Metrics/PerceivedComplexity:
Exclude:
- 'bin/bundle'

Metrics/AbcSize:
Exclude:
- 'bin/bundle'

Layout/LineLength:
Exclude:
- 'bin/bundle'

Style/MixinUsage:
Exclude:
- 'bin/**/*'

RSpec/MultipleExpectations:
Max: 5

Expand Down
44 changes: 21 additions & 23 deletions bin/bundle
Original file line number Diff line number Diff line change
Expand Up @@ -8,64 +8,62 @@
# this file is here to facilitate running it.
#

require 'rubygems'
require "rubygems"

m = Module.new do
module_function

def invoked_as_script?
File.expand_path($PROGRAM_NAME) == File.expand_path(__FILE__)
File.expand_path($0) == File.expand_path(__FILE__)
end

def env_var_version
ENV['BUNDLER_VERSION']
ENV["BUNDLER_VERSION"]
end

def cli_arg_version
return unless invoked_as_script? # don't want to hijack other binstubs
return unless 'update'.start_with?(ARGV.first || ' ') # must be running `bundle update`

return unless "update".start_with?(ARGV.first || " ") # must be running `bundle update`
bundler_version = nil
update_index = nil
ARGV.each_with_index do |a, i|
bundler_version = a if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN
if update_index && update_index.succ == i && a =~ Gem::Version::ANCHORED_VERSION_PATTERN
bundler_version = a
end
next unless a =~ /\A--bundler(?:[= ](#{Gem::Version::VERSION_PATTERN}))?\z/

bundler_version = Regexp.last_match(1)
bundler_version = $1
update_index = i
end
bundler_version
end

def gemfile
gemfile = ENV['BUNDLE_GEMFILE']
return gemfile if gemfile.present?
gemfile = ENV["BUNDLE_GEMFILE"]
return gemfile if gemfile && !gemfile.empty?

File.expand_path('../Gemfile', __dir__)
File.expand_path("../../Gemfile", __FILE__)
end

def lockfile
lockfile =
case File.basename(gemfile)
when 'gems.rb' then gemfile.sub(/\.rb$/, gemfile)
when "gems.rb" then gemfile.sub(/\.rb$/, gemfile)
else "#{gemfile}.lock"
end
File.expand_path(lockfile)
end

def lockfile_version
return unless File.file?(lockfile)

lockfile_contents = File.read(lockfile)
return unless lockfile_contents =~ /\n\nBUNDLED WITH\n\s{2,}(#{Gem::Version::VERSION_PATTERN})\n/

Regexp.last_match(1)
end

def bundler_version
@bundler_version ||=
env_var_version || cli_arg_version ||
lockfile_version
lockfile_version
end

def bundler_requirement
Expand All @@ -75,30 +73,28 @@ m = Module.new do

requirement = bundler_gem_version.approximate_recommendation

return requirement unless Gem::Version.new(Gem::VERSION) < Gem::Version.new('2.7.0')
return requirement unless Gem::Version.new(Gem::VERSION) < Gem::Version.new("2.7.0")

requirement += '.a' if bundler_gem_version.prerelease?
requirement += ".a" if bundler_gem_version.prerelease?

requirement
end

def load_bundler!
ENV['BUNDLE_GEMFILE'] ||= gemfile
ENV["BUNDLE_GEMFILE"] ||= gemfile

activate_bundler
end

def activate_bundler
gem_error = activation_error_handling do
gem 'bundler', bundler_requirement
gem "bundler", bundler_requirement
end
return if gem_error.nil?

require_error = activation_error_handling do
require 'bundler/version'
require "bundler/version"
end
return if require_error.nil? && Gem::Requirement.new(bundler_requirement).satisfied_by?(Gem::Version.new(Bundler::VERSION))

warn "Activating bundler (#{bundler_requirement}) failed:\n#{gem_error.message}\n\nTo install the version of bundler this project requires, run `gem install bundler -v '#{bundler_requirement}'`"
exit 42
end
Expand All @@ -113,4 +109,6 @@ end

m.load_bundler!

load Gem.bin_path('bundler', 'bundle') if m.invoked_as_script?
if m.invoked_as_script?
load Gem.bin_path("bundler", "bundle")
end
16 changes: 8 additions & 8 deletions bin/puma
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,22 @@
# this file is here to facilitate running it.
#

require 'pathname'
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile',
Pathname.new(__FILE__).realpath)
require "pathname"
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
Pathname.new(__FILE__).realpath)

bundle_binstub = File.expand_path('bundle', __dir__)
bundle_binstub = File.expand_path("../bundle", __FILE__)

if File.file?(bundle_binstub)
if /This file was generated by Bundler/.match?(File.read(bundle_binstub, 300))
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
load(bundle_binstub)
else
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
end
end

require 'rubygems'
require 'bundler/setup'
require "rubygems"
require "bundler/setup"

load Gem.bin_path('puma', 'puma')
load Gem.bin_path("puma", "puma")
16 changes: 8 additions & 8 deletions bin/pumactl
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,22 @@
# this file is here to facilitate running it.
#

require 'pathname'
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile',
Pathname.new(__FILE__).realpath)
require "pathname"
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
Pathname.new(__FILE__).realpath)

bundle_binstub = File.expand_path('bundle', __dir__)
bundle_binstub = File.expand_path("../bundle", __FILE__)

if File.file?(bundle_binstub)
if /This file was generated by Bundler/.match?(File.read(bundle_binstub, 300))
if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
load(bundle_binstub)
else
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
end
end

require 'rubygems'
require 'bundler/setup'
require "rubygems"
require "bundler/setup"

load Gem.bin_path('puma', 'pumactl')
load Gem.bin_path("puma", "pumactl")

0 comments on commit d25648c

Please sign in to comment.