gpt4 book ai didi

ruby - 创建 Ruby gem//'require' 错误 : cannot load such file (LoadError)

转载 作者:数据小太阳 更新时间:2023-10-29 08:46:54 26 4
gpt4 key购买 nike

我正在尝试创建我的第一个 Ruby gem,但我在第一个“require”行收到 LoadError。

在我的 gem 文件夹中,我有 3 个类,包括“version.rb”(发生 LoadError 的地方)

版本.rb

module OptimalBankroll
VERSION = "0.0.1"
end

numeric.rb(我修改了数字类,以便使用的任何整数/ float 都将更改为百分比:

module OptimalBankroll
class Numeric
def to_percentage
self.to_f / 100
end
end
end

bet_size.rb(例如:BetSize.new.amount(1000,1),返回 ==> 10

module OptimalBankroll
class BetSize
def amount(bankroll, unit)
bankroll.round(2) * unit.round(2).to_percentage
end
end
end

optimal_bankroll.rb(这是我得到 LoadError 的地方)

require "optimal_bankroll/version"
require "optimal_bankroll/numeric"
require "optimal_bankroll/bet_size"

module OptimalBankroll

end

p OptimalBankroll::BetSize.new.amount(1000, 0.5)

rubygems/core_ext/kernel_require.rb:53:in `require': cannotload such file --
optimal_bankroll/version (LoadError)

我对创建 Ruby gems 完全陌生,所以任何建议都会有所帮助,谢谢!

最佳答案

如果您传递给 require 的字符串不是绝对路径,它只会检查 $LOAD_PATH 中指定目录中的文件。通常,这些文件放在 lib/ 中,它被添加到您的 gemspec 中的 $LOAD_PATH 中。确保你的 gemspec 中有这些行:

lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)

那么为了让你的 require 工作,你需要使用这个文件夹结构:

/
└── lib/
└── optimal_bankroll.rb
└── optimal_bankroll/
└── version.rb
└── numeric.rb
└── bet_size.rb

使用上述目录方案是标准做法,应避免更改 $LOAD_PATH 以匹配您放置文件的位置,而不是相反。

这里是关于如何使用 bundler 创建 gem 的指南。如果您刚刚开始进行 gem 开发,您可能会发现它很有帮助。 http://bundler.io/v1.6/rubygems.html

关于ruby - 创建 Ruby gem//'require' 错误 : cannot load such file (LoadError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25168791/

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