当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby ENV类用法及代码示例


本文简要介绍ruby语言中 ENV类 的用法。

ENV 是环境变量的 hash-like 访问器。

与操作系统的交互

ENV 对象与操作系统的环境变量交互:

  • 当您在 ENV 中获取名称的值时,将从当前环境变量中检索该值。

  • 当您在 ENV 中创建或设置 name-value 对时,名称和值会立即在环境变量中设置。

  • 当您删除 ENV 中的 name-value 对时,它会立即从环境变量中删除。

名称和值

通常,名称或值是 String

有效的名称和值

每个名称或值必须是以下之一:

  • 一个 String

  • 通过返回 String 来响应 #to_str 的对象,在这种情况下, String 将用作名称或值。

无效的名称和值

一个新名字:

  • 可能不是空字符串:

    ENV[''] = '0'
    # Raises Errno::EINVAL (Invalid argument - ruby_setenv())
  • 可能不包含字符 "="

    ENV['='] = '0'
    # Raises Errno::EINVAL (Invalid argument - ruby_setenv(=))

新名称或值:

  • 可能不是不响应 #to_str 的非字符串:

    ENV['foo'] = Object.new
    # Raises TypeError (no implicit conversion of Object into String)
    ENV[Object.new] = '0'
    # Raises TypeError (no implicit conversion of Object into String)
  • 可能不包含 NUL 字符 "\0"

    ENV['foo'] = "\0"
    # Raises ArgumentError (bad environment variable value: contains null byte)
    ENV["\0"] == '0'
    # Raises ArgumentError (bad environment variable name: contains null byte)
  • 可能没有 ASCII-incompatible 编码,例如 UTF-16LE 或 ISO-2022-JP:

    ENV['foo'] = '0'.force_encoding(Encoding::ISO_2022_JP)
    # Raises ArgumentError (bad environment variable name: ASCII incompatible encoding: ISO-2022-JP)
    ENV["foo".force_encoding(Encoding::ISO_2022_JP)] = '0'
    # Raises ArgumentError (bad environment variable name: ASCII incompatible encoding: ISO-2022-JP)

关于排序

ENV 按操作系统环境变量中的顺序枚举其名称/值对。因此 ENV 内容的顺序是OS-dependent,并且可能是不确定的。

这将出现在:

关于示例

ENV 中的某些方法会返回 ENV 本身。通常,有许多环境变量。在此处的示例中显示大的 ENV 没有用,因此大多数示例片段都是从重置 ENV 的内容开始的:

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 ENV类。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。