mongodb/bson-ruby
GitHub: mongodb/bson-ruby
MongoDB 官方的 Ruby BSON 序列化库,实现 Ruby 对象与 BSON 二进制格式之间的编解码转换。
Stars: 82 | Forks: 111
# BSON
[][rubygems-url]
[][ghactions-url]
Ruby 中对 BSON 规范的实现。
## 安装
可以通过 RubyGems 安装 BSON:
```
> gem install bson
```
或者将其添加到项目的 Gemfile 中:
```
gem 'bson'
```
### 版本完整性
Ruby 版 BSON 库在 5.0.0 版本之后的每次发布都是自动构建并使用团队的 GPG 密钥签名的。
要验证 bson gem 文件:
1. [下载 GPG 密钥](https://pgp.mongodb.com/ruby-driver.asc)。
2. 使用 `gpg --import ruby-driver.asc` 将密钥导入您的 GPG 密钥环。
3. 下载 gem 文件(如果您还没有的话)。您可以使用 `gem fetch bson` 从 RubyGems 下载,或者从 GitHub 上的[发布页面](https://github.com/mongodb/bson-ruby/releases)下载。
4. 从[同一个发布版本](https://github.com/mongodb/bson-ruby/releases)下载对应的分离签名文件。在与 gem 文件对应的发布版本底部的 'Assets' 列表中,查找与您要安装的 gem 版本号相同的 `.sig` 文件。
5. 使用 `gpg --verify bson-X.Y.Z.gem.sig bson-X.Y.Z.gem` 验证 gem(将 `X.Y.Z` 替换为实际版本号)。
您需要在输出中查找诸如 "Good signature from "MongoDB Ruby Driver Release Signing Key " 之类的文本。如果您看到此信息,则说明签名与给定的 gem 文件相符。
(请注意,其他输出内容,如 "This key is not certified with a trusted signature!",与 *信任网络(web of trust)* 有关,取决于您个人对我们提供的 `ruby-driver.asc` 密钥的信任程度。欲了解更多信息,请参阅 https://www.gnupg.org/gph/en/manual/x334.html)
### 为什么不使用 RubyGems 的 gem 签名功能?
RubyGems 自身的 gem 签名存在问题,最主要的原因是缺少与用于签署 gem 的密钥相关的既定信任链。RubyGems 自己的文档也承认 “这种签名 gem 的方法并未被广泛使用”(参见 https://guides.rubygems.org/security/)。RubyGems 社区关于此问题的讨论断断续续进行了十多年,虽然最终会有解决方案,但出于以下原因,我们决定使用 GPG:
1. MongoDB 的许多其他驱动团队都在使用 GPG 签署其产品发布。与其他团队保持一致意味着我们可以复用现有的工具进行自己的产品发布。
2. GPG 广泛可用,并且拥有用于处理信任网络的现有工具和流程(尽管对于初学者来说,这些工具和流程无疑相当晦涩且令人生畏)。
最终,大多数用户并不会费心去验证 gem,因此不会受到我们选择 GPG 而非 RubyGems 原生方法的影响。
## 兼容性
BSON 在 MRI (2.7+) 和 JRuby (9.3+) 上进行了测试。
## 文档
当前文档可在
[此处](https://www.mongodb.com/docs/ruby-driver/current/bson-tutorials/)找到。
## API 文档
[API 文档](https://www.mongodb.com/docs/ruby-driver/master/api/)位于 mongodb.com/docs。
## BSON 规范
[BSON 规范](http://bsonspec.org)位于 bsonspec.org。
## Bug 与功能请求
要报告 `bson` gem 中的 bug 或请求新功能:
1. 访问[我们的 issue 追踪器](https://jira.mongodb.org/)并登录
(如果您还没有帐户,请创建一个)。
2. 导航到 [RUBY 项目](https://jira.mongodb.org/browse/RUBY)。
3. 点击 'Create Issue' 并填写所有适用的表单字段,
务必在 _Component/s_ 字段中选择 `BSON`。
创建 issue 时,请记住 JIRA 中 RUBY 项目的所有信息以及核心服务器(SERVER 项目)的信息都是公开可见的。
**请务必:**
- 尽可能提供关于该问题的详细信息。
- 提供重现该问题的详细步骤。
- 提供任何适用的代码片段、堆栈跟踪和日志数据。
- 注明 `bson` gem 和/或 Ruby 驱动程序以及 MongoDB 服务器的版本号。
**请勿:**
- 提供任何敏感数据或服务器日志。
- 公开报告潜在的安全问题(见下文 '安全问题')。
## 安全问题
如果您在 `bson` gem(或任何其他 MongoDB 产品)中发现了潜在的安全相关问题,
请按照[此处的说明](https://www.mongodb.com/docs/manual/tutorial/create-a-vulnerability-report)进行报告。
## 产品功能请求
如果您请求的功能并非特定于 `bson` gem,或者影响范围超出 `bson` gem 和/或 Ruby 驱动程序本身(例如,需要 MongoDB 服务器支持的功能),请通过 [MongoDB 反馈论坛](https://feedback.mongodb.com/forums/924286-drivers)提交您的想法。
## 维护与 Bug 修复策略
新的库功能通常以向后兼容的方式添加,并产生新的次要版本。Bug 修复通常首先在 master 分支上进行,然后反向移植到当前的次要库版本中。可能会根据具体情况作出例外处理,例如,安全修复可能会反向移植到较旧的稳定分支。仅官方支持最新的次要版本。客户应在其应用程序中使用最新版本。
## 版本控制
自 2.0.0 起,本项目遵循[语义化版本规范](http://semver.org/)。
## 许可证
Copyright (C) 2009-2020 MongoDB Inc.
根据 Apache 许可证 2.0 版("License")获得许可;
除非遵守本许可证,否则您不得使用本文件。
您可以在以下网址获取许可证副本
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则根据许可证分发的软件
是按 "原样" 分发的,
没有任何形式的明示或暗示的担保或条件。
请参阅许可证以了解管理权限和
限制的特定语言。
标签:BSON, Gem, GPG签名, MongoDB, Ruby, Syscall, Web开发, 二进制数据, 后端开发, 库, 应急响应, 数据交换格式, 数据序列化, 数据编码, 知识库, 网络安全监控, 驱动开发