Module: Gem
- Defined in:
- lib/bundler/rubygems_ext.rb
Defined Under Namespace
Modules: BetterPermissionError, FixFullNameEncoding Classes: BasicSpecification, Dependency, NameTuple, Package, Platform, Requirement, Specification, SpecificationPolicy, StubSpecification
Constant Summary collapse
- VALIDATES_FOR_RESOLUTION =
Can be removed once RubyGems 3.5.14 support is dropped
Specification.new.respond_to?(:validate_for_resolution).freeze
- FLATTENS_REQUIRED_PATHS =
Can be removed once RubyGems 3.3.15 support is dropped
Specification.new.respond_to?(:flatten_require_paths).freeze
Class Method Summary collapse
- .freebsd_platform? ⇒ Boolean
- .open_file_with_flock(path, &block) ⇒ Object
- .open_file_with_lock(path, &block) ⇒ Object
Class Method Details
.freebsd_platform? ⇒ Boolean
28 29 30 |
# File 'lib/bundler/rubygems_ext.rb', line 28 def self.freebsd_platform? RbConfig::CONFIG["host_os"].to_s.include?("bsd") end |
.open_file_with_flock(path, &block) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/bundler/rubygems_ext.rb', line 38 def open_file_with_flock(path, &block) # read-write mode is used rather than read-only in order to support NFS mode = IO::RDWR | IO::APPEND | IO::CREAT | IO::BINARY mode |= IO::SHARE_DELETE if IO.const_defined?(:SHARE_DELETE) File.open(path, mode) do |io| begin io.flock(File::LOCK_EX) rescue Errno::ENOSYS, Errno::ENOTSUP end yield io end end |
.open_file_with_lock(path, &block) ⇒ Object
52 53 54 55 56 57 |
# File 'lib/bundler/rubygems_ext.rb', line 52 def open_file_with_lock(path, &block) file_lock = "#{path}.lock" open_file_with_flock(file_lock, &block) ensure FileUtils.rm_f file_lock end |