ruby - How to run unit tests before building a ruby gem?
问题描述
I am developing a gem and I have my unit tests in lib/spec directory. Currently I manually run unit tests using rspec lib/spec
. And then I build gem using gem build mygem.gemspec
(which builds a .gem file).
How can I run my unit tests along with gem build command? (Just like how we do production builds using npm)
解决方案
如果您的构建过程包含多个任务(例如测试、创建 gem、发布 gem),并且这些任务之间存在依赖关系(例如,只有在测试成功时才应创建 gem,以便发布 gem ,它需要先创建),您可以使用构建工具来自动化它。
实际上,构建工具的用途远不止构建,这就是为什么有些人更喜欢术语面向任务的编程或(我个人喜欢的)面向依赖的编程。
这种面向依赖的编程工具中最著名的可能是make
. 如果您熟悉 Java 生态系统,您可能知道Apache Ant和Gradle。在 Microsoft 世界中,有Microsoft Build Engine (MSBuild)。从 ECMAScript 生态系统中,您可能知道Grunt或Gulp。新来的热门人是 Google 的Bazel。
Ruby 也有自己的此类工具,使用最广泛的一种是Rake。
许多 Ruby 库和工具都带有自己现成的 Rake 任务,因此您不必自己编写它们。例如,对于您的特定用例,有用于构建 gem 和运行 RSpec 测试的现成任务。
推荐阅读
- ansible - gitlab:如何从页面/wiki/链接触发特定的 CI/CD?(即基于链接中的变量)
- ios - 如何选择将 iCloud 与核心数据一起使用?
- java - 如何删除单击 JButton 时出现的蓝色框
- flutter - 错误:错误:没有为类型“_StoryPageState”定义方法“nextStory”
- android - Android 的 Flutter Signed Build 未打开,但所有调试版本都运行良好?
- maven - 测试用例在 STS 上运行,但不在 jenkins pipeLine 中
- gnu - 外部排序的内存使用(gnu coreutils)
- timer - 当代码没有停止运行并且上传失败时,如何将代码上传到 Arduino UNO?
- android - 在 Android 中使用 TextView 更改 SeekBar 位置
- reactjs - Gatsby JS 元素类型无效:应为字符串(用于内置组件)或类/函数(用于复合组件)但得到:未定义