gpt4 book ai didi

当 gem 在 bundle exec 之外运行时,Ruby 未初始化常量错误

转载 作者:太空宇宙 更新时间:2023-11-03 16:19:31 25 4
gpt4 key购买 nike

我有一个从字符串创建 MD5 的简单 gem。

module SimpleMD5
require 'digest/md5'

def self.md5_string(string)
Digest::MD5.hexdigest(string)
end
end

运行 bundle exec bin/console 并调用该方法工作正常

需要'simple_md5'

SimpleMD5.md5_string('测试')

=> 098f6bcd4621d373cade4e832627b4f6

使用 IRB 控制台和上面的相同示例使用 rake buildrake install 构建 gem 后,我收到错误。

NameError:未初始化常量 SimpleMD5::Digest

构建 gem 时我是否遗漏了一个步骤?

最佳答案

你缺少模块定义,所以使用这个模式:

require 'digest/md5'

module SimpleMD5
def md5_string(string)
Digest::MD5.hexdigest(string)
end

extend self
end

SimpleMD5 名称不会自动生成,您必须在某处声明它。

此处 extend self 意味着您可以将模块与 include SimpleMD5 混合使用,也可以像在示例中那样直接使用它。

不要忘记两件事:在 Ruby 中,return 是隐式的,没有必要使用它,除非你提前退出你的函数,MD5 在 2016 年是一个非常糟糕的哈希算法。除非您使用它是为了向后兼容,请使用更好的东西,例如 SHA256 或 SHA512。

关于当 gem 在 bundle exec 之外运行时,Ruby 未初始化常量错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36613279/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com