module Gem

Constants

FLATTENS_REQUIRED_PATHS

Can be removed once RubyGems 3.3.15 support is dropped

Net
Random
SecureRandom

Secure random number generator interface.

This library is an interface to secure random number generators which are suitable for generating session keys in HTTP cookies, etc.

You can use this library in your application by requiring it:

require 'bundler/vendor/securerandom/lib/securerandom'

It supports the following secure random number generators:

  • openssl

  • /dev/urandom

  • Win32

Bundler::SecureRandom is extended by the Bundler::Random::Formatter module which defines the following methods:

  • alphanumeric

  • base64

  • choose

  • gen_random

  • hex

  • rand

  • random_bytes

  • random_number

  • urlsafe_base64

  • uuid

These methods are usable as class methods of Bundler::SecureRandom such as Bundler::SecureRandom.hex.

If a secure random number generator is not available, NotImplementedError is raised.

Timeout
URI

Bundler::URI is a module providing classes to handle Uniform Resource Identifiers (RFC2396).

Features

  • Uniform way of handling URIs.

  • Flexibility to introduce custom Bundler::URI schemes.

  • Flexibility to have an alternate Bundler::URI::Parser (or just different patterns and regexp’s).

Basic example

require 'bundler/vendor/uri/lib/uri'

uri = Bundler::URI("http://foo.com/posts?id=30&limit=5#time=1305298413")
#=> #<Bundler::URI::HTTP http://foo.com/posts?id=30&limit=5#time=1305298413>

uri.scheme    #=> "http"
uri.host      #=> "foo.com"
uri.path      #=> "/posts"
uri.query     #=> "id=30&limit=5"
uri.fragment  #=> "time=1305298413"

uri.to_s      #=> "http://foo.com/posts?id=30&limit=5#time=1305298413"

Adding custom URIs

module Bundler::URI
  class RSYNC < Generic
    DEFAULT_PORT = 873
  end
  register_scheme 'RSYNC', RSYNC
end
#=> Bundler::URI::RSYNC

Bundler::URI.scheme_list
#=> {"FILE"=>Bundler::URI::File, "FTP"=>Bundler::URI::FTP, "HTTP"=>Bundler::URI::HTTP,
#    "HTTPS"=>Bundler::URI::HTTPS, "LDAP"=>Bundler::URI::LDAP, "LDAPS"=>Bundler::URI::LDAPS,
#    "MAILTO"=>Bundler::URI::MailTo, "RSYNC"=>Bundler::URI::RSYNC}

uri = Bundler::URI("rsync://rsync.foo.com")
#=> #<Bundler::URI::RSYNC rsync://rsync.foo.com>

RFC References

A good place to view an RFC spec is www.ietf.org/rfc.html.

Here is a list of all related RFC’s:

Class tree

Copyright Info

Author

Akira Yamada <akira@ruby-lang.org>

Documentation

Akira Yamada <akira@ruby-lang.org> Dmitry V. Sabanin <sdmitry@lrn.ru> Vincent Batts <vbatts@hashbangbash.com>

License

Copyright © 2001 akira yamada <akira@ruby-lang.org> You can redistribute it and/or modify it under the same term as Ruby.















VALIDATES_FOR_RESOLUTION

Can be removed once RubyGems 3.5.14 support is dropped

Public Class Methods

URI(uri) click to toggle source
# File bundler/vendored_uri.rb, line 16
def URI(uri) # rubocop:disable Naming/MethodName
  Bundler::URI(uri)
end
freebsd_platform?() click to toggle source
# File bundler/rubygems_ext.rb, line 28
def self.freebsd_platform?
  RbConfig::CONFIG["host_os"].to_s.include?("bsd")
end
open_file_with_flock(path) { |io| ... } click to toggle source
# File 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) click to toggle source
# File 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

Public Instance Methods

match_gem?(platform, gem_name) click to toggle source
# File bundler/rubygems_ext.rb, line 328
def match_gem?(platform, gem_name)
  match_platforms?(platform, Gem.platforms)
end
match_platforms?(platform, platforms) click to toggle source
# File bundler/rubygems_ext.rb, line 341
def match_platforms?(platform, platforms)
  platforms.any? do |local_platform|
    platform.nil? ||
      local_platform == platform ||
      (local_platform != Gem::Platform::RUBY && platform =~ local_platform)
  end
end
match_spec?(spec) click to toggle source
# File bundler/rubygems_ext.rb, line 324
def match_spec?(spec)
  match_gem?(spec.platform, spec.name)
end

Private Instance Methods

URI(uri) click to toggle source
# File bundler/vendored_uri.rb, line 16
def URI(uri) # rubocop:disable Naming/MethodName
  Bundler::URI(uri)
end