模块 Gem

常量

FLATTENS_REQUIRED_PATHS

一旦 RubyGems 3.3.15 的支持被删除,就可以移除此项

Net
SecureRandom

安全随机数生成器接口。

这个库是安全随机数生成器的接口,适用于生成 HTTP Cookie 中的会话密钥等。

您可以通过引用这个库在您的应用程序中使用它

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

它支持以下安全随机数生成器

  • openssl

  • /dev/urandom

  • Win32

Bundler::SecureRandom 扩展了 Random::Formatter 模块,该模块定义了以下方法

  • alphanumeric

  • base64

  • choose

  • gen_random

  • hex

  • rand

  • random_bytes

  • random_number

  • urlsafe_base64

  • uuid

这些方法可以作为 Bundler::SecureRandom 的类方法使用,例如 Bundler::SecureRandom.hex

如果无法使用安全随机数生成器,将引发 NotImplementedError 错误。

Timeout
URI

Bundler::URI 是一个提供处理统一资源标识符(RFC2396)的类的模块。

特性

  • 处理 URI 的统一方法。

  • 灵活引入自定义的 Bundler::URI 方案。

  • 灵活地拥有备用的 Bundler::URI::Parser(或只是不同的模式和正则表达式)。

基本示例

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"

添加自定义 URI

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 参考

查看 RFC 规范的好地方是 www.ietf.org/rfc.html

以下是所有相关 RFC 的列表

类树

版权信息

作者

Akira Yamada <[email protected]>

文档

Akira Yamada <[email protected]> Dmitry V. Sabanin <[email protected]> Vincent Batts <[email protected]>

许可证

版权所有 © 2001 akira yamada <[email protected]> 您可以根据与 Ruby 相同的条款重新分发和/或修改它。















VALIDATES_FOR_RESOLUTION

一旦 RubyGems 3.5.14 的支持被删除,就可以移除此项

公共类方法

URI(uri) 点击切换源代码
# File bundler/vendored_uri.rb, line 16
def URI(uri) # rubocop:disable Naming/MethodName
  Bundler::URI(uri)
end
freebsd_platform?() 点击切换源代码
# 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| ... } 点击切换源代码
# File 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) 点击切换源代码
# File 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

公共实例方法

match_gem?(platform, gem_name) 点击切换源代码
# File bundler/rubygems_ext.rb, line 348
def match_gem?(platform, gem_name)
  match_platforms?(platform, Gem.platforms)
end
match_platforms?(platform, platforms) 点击切换源代码
# File bundler/rubygems_ext.rb, line 361
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) 点击切换源代码
# File bundler/rubygems_ext.rb, line 344
def match_spec?(spec)
  match_gem?(spec.platform, spec.name)
end

私有实例方法

URI(uri) 点击切换源代码
# File bundler/vendored_uri.rb, line 16
def URI(uri) # rubocop:disable Naming/MethodName
  Bundler::URI(uri)
end