Temping 项目技术文档
2024-12-23 09:01:21作者:何将鹤
本文档将详细介绍如何安装、使用Temping项目,以及如何使用其API。Temping允许您为测试创建任意基于临时SQL表的ActiveRecord模型。
1. 安装指南
在Gemfile中添加以下代码:
gem "temping"
在test_helper.rb文件中,如果是使用ActiveSupport::TestCase,请添加以下代码块:
class ActiveSupport::TestCase
# ...
teardown do
Temping.teardown
end
# ...
end
如果是使用rspec,在spec_helper.rb中添加以下代码块:
RSpec.configure do |config|
# ...
config.after do
Temping.teardown
end
# ...
end
如果你想仅清理表但保留定义的模型在内存中,可以使用:
Temping.cleanup
2. 项目的使用说明
Temping的基本设置包括调用create方法,并传递一个表示要创建的模型类名的符号。默认情况下,这将创建一个包含id列的临时表。
Temping.create(:dog)
Dog.create # => <Dog id: 1>
Dog.table_name # => "dogs"
Dog # => Dog(id: integer)
请注意,表名始终是复数形式,而类名是单数形式。
Temping.create(:dogs)
Dog.table_name # => "dogs"
Dogs # => NameError: uninitialized constant Dogs
可以通过with_columns方法指定额外的数据库列,它使用Rails迁移语法:
Temping.create(:dog) do
with_columns do |t|
t.string :name
t.integer :age, :weight
end
end
Dog.create # => <Dog id: 1, name: nil, age: nil, weight: nil>
当向create传递一个块时,该块在类的上下文中执行。这意味着在ActiveRecord模型类体中可以做的任何事情都可以在块中完成,包括方法定义、验证、模块包含等。
Temping.create(:dog) do
validates :name, presence: true
with_columns do |t|
t.string :name
t.integer :age, :weight
end
def quack
"arf!"
end
end
Dog.create!
# => ActiveRecord::RecordInvalid: Validation failed: Name can't be blank
codey = Dog.create!(name: "Codey")
codey.quack
# => "arf!"
传递给create_table的所有属性也会被评估。例如,您可以创建一个主键类型为uuid的狗(假设您使用的是启用了uuid-ossp扩展的PostgreSQL):
Temping.create(:dog, id: :uuid, default: -> { "uuid_generate_v4()" })
Dog.create # => <Dog id: d937951b-765c-4bc9-804e-3171d22117b0>
3. 项目API使用文档
Temping.create(symbol, [parent_class: nil]):创建一个名为symbol的临时模型。可选地,可以指定一个父类。Temping.create(symbol) do ... end:在块中定义模型的结构和属性。Temping.teardown:在测试结束时调用,用于销毁所有临时表和定义的模型。Temping.cleanup:清理所有临时表,但保留定义的模型在内存中。
4. 项目安装方式
请遵循以下步骤来安装Temping:
- 将Temping添加到您的Gemfile中。
- 运行
bundle install来安装gem。 - 根据您的测试框架(如ActiveSupport或RSpec),在相应的测试帮助文件中配置Temping。
通过遵循以上步骤,您将能够成功安装和使用Temping项目。
登录后查看全文
热门项目推荐
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
yuanrongopenYuanrong runtime:openYuanrong 多语言运行时提供函数分布式编程,支持 Python、Java、C++ 语言,实现类单机编程高性能分布式运行。Go051
pc-uishopTNT开源商城系统使用java语言开发,基于SpringBoot架构体系构建的一套b2b2c商城,商城是满足集平台自营和多商户入驻于一体的多商户运营服务系统。包含PC 端、手机端(H5\APP\小程序),系统架构以及实现案例中应满足和未来可能出现的业务系统进行对接。Vue00
ebook-to-mindmapepub、pdf 拆书 AI 总结TSX01
项目优选
收起
deepin linux kernel
C
27
11
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
540
3.77 K
Ascend Extension for PyTorch
Python
351
417
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
889
614
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
338
185
openJiuwen agent-studio提供零码、低码可视化开发和工作流编排,模型、知识库、插件等各资源管理能力
TSX
988
253
openGauss kernel ~ openGauss is an open source relational database management system
C++
169
233
暂无简介
Dart
778
193
华为昇腾面向大规模分布式训练的多模态大模型套件,支撑多模态生成、多模态理解。
Python
115
141
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.35 K
758