mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	* bin/*, lib/bundler/*, lib/bundler.rb, spec/bundler, man/*:
    Merge from latest stable branch of bundler/bundler repository and
    added workaround patches. I will backport them into upstream.
  * common.mk, defs/gmake.mk: Added `test-bundler` task for test suite
    of bundler.
  * tool/sync_default_gems.rb: Added sync task for bundler.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65509 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
		
	
			
		
			
				
	
	
		
			24 lines
		
	
	
	
		
			702 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
	
		
			702 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
module Bundler
 | 
						|
  class ProcessLock
 | 
						|
    def self.lock(bundle_path = Bundler.bundle_path)
 | 
						|
      lock_file_path = File.join(bundle_path, "bundler.lock")
 | 
						|
      has_lock = false
 | 
						|
 | 
						|
      File.open(lock_file_path, "w") do |f|
 | 
						|
        f.flock(File::LOCK_EX)
 | 
						|
        has_lock = true
 | 
						|
        yield
 | 
						|
        f.flock(File::LOCK_UN)
 | 
						|
      end
 | 
						|
    rescue Errno::EACCES, Errno::ENOLCK, *[SharedHelpers.const_get_safely(:ENOTSUP, Errno)].compact
 | 
						|
      # In the case the user does not have access to
 | 
						|
      # create the lock file or is using NFS where
 | 
						|
      # locks are not available we skip locking.
 | 
						|
      yield
 | 
						|
    ensure
 | 
						|
      FileUtils.rm_f(lock_file_path) if has_lock
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |