You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Ruby Koans时rake命令执行失败:任务未找到及常量未初始化错误

Ruby Koans执行rake命令报错排查方案

遇到的错误场景

1. 执行rake gen时的错误

rake aborted!
Don't know how to build task 'gen' (See the list of available tasks with `rake --tasks`)

(See full trace by running task with --trace)

2. 执行rake时的错误

/.rbenv/versions/3.2.1/bin/ruby path_to_enlightenment.rb

Thinking AboutAsserts
  test_assert_truth has damaged your karma.

You have not yet reached enlightenment ...
<false> is not true.

Please meditate on the following code:
/ruby_koans/koans/edgecase.rb:102:in `assert_failed?': uninitialized constant EdgeCase::Sensei::AssertionError (NameError)

      failure.is_a?(AssertionError)
                    ^^^^^^^^^^^^^^
    from ruby_koans/koans/edgecase.rb:112:in `report'
    from /ruby_koans/koans/edgecase.rb:265:in `block in <top (required)>'
rake aborted!
Command failed with status (1): [/.rbenv/versions/3.2.1/bin/ruby ...]
/ruby_koans/koans/Rakefile:10:in `block in <top (required)>'
Tasks: TOP => default => test
(See full trace by running task with --trace)

解决方法

关于rake gen任务不存在的问题

  • Ruby Koans没有gen这个官方rake任务,你可能混淆了其他Ruby工具的命令。执行rake --tasks可以查看当前目录下所有可用的rake任务,Ruby Koans常用的任务是默认的rake(执行测试)或rake test。

关于AssertionError未初始化的错误

这个错误是因为Ruby 3.2及以上版本移除了核心库中的AssertionError类,而你使用的Ruby Koans版本依赖这个类。有两种解决途径:

  1. 切换兼容的Ruby版本
    使用rbenv安装并切换到Ruby 3.1.x或2.7.x版本(这些版本仍保留AssertionError):

    rbenv install 3.1.4
    rbenv local 3.1.4
    

    切换完成后重新运行rake即可。

  2. 修改Ruby Koans代码
    如果不想切换Ruby版本,手动修改/ruby_koans/koans/edgecase.rb文件,在文件开头添加AssertionError的类定义:

    module EdgeCase
      module Sensei
        class AssertionError < StandardError; end
      end
    end
    

    保存修改后,再次执行rake就能正常运行测试流程。

内容的提问来源于stack exchange,提问作者counterapparatus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 19:18:46