Module: Gem
- Defined in:
- lib/bundler/rubygems_ext.rb
Defined Under Namespace
Modules: BetterPermissionError Classes: BasicSpecification, Dependency, NameTuple, 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 51 |
# File 'lib/bundler/rubygems_ext.rb', line 38 def open_file_with_flock(path, &block) mode = IO::RDONLY | 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 rescue Errno::ENOLCK # NFS raise unless Thread.main == Thread.current end yield io end end |
.open_file_with_lock(path, &block) ⇒ Object
53 54 55 56 57 58 |
# File 'lib/bundler/rubygems_ext.rb', line 53 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 |