类:Mongo::Server::AppMetadata::Environment Private

继承:
对象
  • 对象
显示全部
定义于:
lib/ Mongo/ 服务器/app_metadata/environment.rb

Overview

此类是私有 API 的一部分。 应尽可能避免使用此类,因为它将来可能会被删除或更改。

实现握手规范中的逻辑,用于推断和报告程序执行的当前环境。

这包括 FaaS 环境检查,以及容器(Docker) 和/或协调器 (Kubernetes) 是否存在的检查。

由于:

  • 2.0.0

在命名空间下定义

类: MissingVariableTooManyEnvironmentsTypeMismatchValueTooLong

常量摘要折叠

DOCKERENV_PATH =

此常量是私有 API 的一部分。 应尽可能避免使用此常量,因为它将来可能会被删除或更改。

.dockerenv 的名称和位置 文件,该文件将表明Docker的存在。

由于:

  • 2.0.0

'/.dockerenv'
MAXIMUM_VALUE_LENGTH =

此常量是私有 API 的一部分。 应尽可能避免使用此常量,因为它将来可能会被删除或更改。

规范中未明确指定该值,仅暗示小于512 。

由于:

  • 2.0.0

500
鉴别器 =

此常量是私有 API 的一部分。 应尽可能避免使用此常量,因为它将来可能会被删除或更改。

根据存在的环境变量确定哪个 FaaS 环境处于活动状态的映射。

由于:

  • 2.0.0

{
  ' AWS_EXECUTION_ENV ' => { 模式: / ^AWS_Lambda_ /, 名称: 'aws.lambda' },
  ' AWS_LAMBDA_RUNTIME_API ' => { 名称: 'aws.lambda' },
  ' FUNCTIONS_WORKER_RUNTIME ' => { 名称: 'azure.func' },
  ' K_SERVICE ' => { 名称: ' gcp.func ' },
  ' FUNCTION_NAME ' => { 名称: ' gcp.func ' },
  'VERCEL' => { 名称: 'vercel' },
}.冻结
COERCIONS =

此常量是私有 API 的一部分。 应尽可能避免使用此常量,因为它将来可能会被删除或更改。

描述如何强制转换指定类型的值。

由于:

  • 2.0.0

{
  string : ->(v) { 字符串(v) },
  整数: ->(v) { 整型(v) }
}.冻结
字段 =

此常量是私有 API 的一部分。 应尽可能避免使用此常量,因为它将来可能会被删除或更改。

描述每个 FaaS 环境需要哪些字段,以及它们的预期类型,以及它们在握手文档中的命名方式。

由于:

  • 2.0.0

{
  'aws.lambda' => {
    'AWS_REGION' => { 字段: :地区, 类型: : 细绳 },
    'AWS_LAMBDA_FUNCTION_MEMORY_SIZE' => { 字段: :memory_mb, 类型: :整数 },
  },

  'azure.func' => {},

  ' gcp.func ' => {
    ' FUNCTION_MEMORY_MB ' => { 字段: :memory_mb, 类型: :整数 },
    ' FUNCTION_TIMEOUT_SEC ' => { 字段: :timeout_sec, 类型: :整数 },
    ' FUNCTION_REGION ' => { 字段: :地区, 类型: : 细绳 },
  },

  'vercel' => {
    ' VERCEL_REGION ' => { 字段: :地区, 类型: : 细绳 },
  },
}.冻结

实例属性摘要折叠

实例方法摘要折叠

构造函数详情

#初始化环境

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

创建一个新的 AppMetadata::Environment对象,并使用当前的 ENV 变量对其进行初始化。 如果未检测到 FaaS 环境,或者环境包含无效或矛盾状态,则会使用设立为 {nil} 的 {name} 进行初始化。

由于:

  • 2.0.0



111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'lib/ Mongo/ 服务器/app_metadata/environment.rb', line 111

def 初始化
  @fields = {}
  @error = nil
  @name = 检测环境
  populate_faas_fields
  检测容器
救援 TooManyEnvironments => e
  self.错误 = "检测到太多环境: #{ e . message } "
救援 MissingVariable => e
  self.错误 = "缺少环境变量: #{ e . message } "
救援 TypeMismatch => e
  self.错误 = e.message
救援 ValueTooLong => e
  self.错误 = " #{ e . message } 值 太长 "
end

实例属性详细信息

#errorString | nil

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

注意:

这些错误消息不会传播给用户;它们仅用于故障排除和调试。)

返回错误消息,解释为何未检测到有效的 FaaS 环境;如果没有发生错误,则返回 nil。

返回:

  • ( string | nil )

    解释为何未检测到有效 FaaS 环境的错误消息;如果没有发生错误,则返回 nil。

由于:

  • 2.0.0



105
106
107
# File 'lib/ Mongo/ 服务器/app_metadata/environment.rb', line 105

def 错误
  @error
end

#个字段哈希 | nil (只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回描述检测到的 FaaS 环境的字段。

返回:

  • ( Hash | nil )

    描述检测到的 FaaS 环境的字段。

由于:

  • 2.0.0



98
99
100
# File 'lib/ Mongo/ 服务器/app_metadata/environment.rb', line 98

def 字段
  @fields
end

#名称string | nil (只读)

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

返回检测到的 FaaS 环境的名称,如果未检测到有效的 FaaS 环境,则返回 nil。

返回:

  • ( string | nil )

    检测到的 FaaS 环境的名称,如果未检测到有效的 FaaS 环境,则为 nil。

由于:

  • 2.0.0



94
95
96
# File 'lib/ Mongo/ 服务器/app_metadata/environment.rb', line 94

def 名称
  @name
end

实例方法详细信息

# Amazon Web Services ?true | false

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

查询当前环境是否为有效的Amazon Web Services Lambda环境。

返回:

  • ( true | false )

    该环境是否为Amazon Web Services Lambda环境。

由于:

  • 2.0.0



157
158
159
# File 'lib/ Mongo/ 服务器/app_metadata/environment.rb', line 157

def Amazon Web Services ?
  @name == 'aws.lambda'
end

# Azure ?true | false

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

查询当前环境是否为有效的 Azure 环境。

返回:

  • ( true | false )

    环境是否为Azure环境。

由于:

  • 2.0.0



166
167
168
# File 'lib/ Mongo/ 服务器/app_metadata/environment.rb', line 166

def Azure ?
  @name == 'azure.func'
end

#容器⇒ 哈希 | nil

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

查询检测到的容器信息。

返回:

  • ( Hash | nil )

    检测到的容器信息,如果未检测到容器,则为 nil。

由于:

  • 2.0.0



131
132
133
# File 'lib/ Mongo/ 服务器/app_metadata/environment.rb', line 131

def container
  字段[:容器]
end

# faas?true | false

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

查询当前环境是否为有效的 FaaS 环境。

返回:

  • ( true | false )

    该环境是否为 FaaS 环境。

由于:

  • 2.0.0



148
149
150
# File 'lib/ Mongo/ 服务器/app_metadata/environment.rb', line 148

def faas?
  @name != nil
end

# GCP ?true | false

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

查询当前环境是否为有效的GCP环境。

返回:

  • ( true | false )

    该环境是否为 GCP 环境。

由于:

  • 2.0.0



175
176
177
# File 'lib/ Mongo/ 服务器/app_metadata/environment.rb', line 175

def gcp?
  @name == ' gcp.func '
end

# 现在? true | false

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

查询是否能够检测到任何环境信息。

返回:

  • ( true | false )

    是否检测到任何环境信息。

由于:

  • 2.0.0



140
141
142
# File 'lib/ Mongo/ 服务器/app_metadata/environment.rb', line 140

def 现在?
  @name || 字段.任何?
end

# to_h哈希

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

将检测到的环境信息编译为哈希。

返回:

  • (哈希)

    检测到的环境信息。

由于:

  • 2.0.0



191
192
193
# File 'lib/ Mongo/ 服务器/app_metadata/environment.rb', line 191

def to_h
  名称 ? 字段.合并(merge)(名称: 名称) : 字段
end

# vercel?true | false

此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。

查询当前环境是否为有效的 Vercel 环境。

返回:

  • ( true | false )

    该环境是否为 Vercel 环境。

由于:

  • 2.0.0



184
185
186
# File 'lib/ Mongo/ 服务器/app_metadata/environment.rb', line 184

def vercel?
  @name == 'vercel'
end