Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建Ruby gem/';要求';错误:无法加载此类文件(LoadError)_Ruby_Module_Rubygems_Require - Fatal编程技术网

创建Ruby gem/';要求';错误:无法加载此类文件(LoadError)

创建Ruby gem/';要求';错误:无法加载此类文件(LoadError),ruby,module,rubygems,require,Ruby,Module,Rubygems,Require,我正在尝试创建我的第一个Ruby gem,但在第一行“require”上出现了加载错误 在我的gem文件夹中,我有3个类,包括'version.rb'(发生LoadError的地方) version.rb module OptimalBankroll VERSION = "0.0.1" end numeric.rb(我修改numeric类,以便使用的任何整数/浮点将更改为百分比: module OptimalBankroll class Numeric def to_percentag

我正在尝试创建我的第一个Ruby gem,但在第一行“require”上出现了加载错误

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

version.rb

module OptimalBankroll
 VERSION = "0.0.1"
end
numeric.rb(我修改numeric类,以便使用的任何整数/浮点将更改为百分比:

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的地方)


我完全不喜欢创建Ruby gems,所以任何建议都会很有帮助,谢谢!

如果传递到
require
的字符串不是绝对路径,它将只检查
$LOAD\u path
中指定目录中的文件。通常,这些文件放在
lib/
中,并添加到
$LOAD\u path中e> 在gemspec中。确保在gemspec中有以下行:

lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
因此,为了满足您的工作需要,您需要使用以下文件夹结构:

/
└── lib/
   └── optimal_bankroll.rb
   └── optimal_bankroll/
      └── version.rb
      └── numeric.rb
      └── bet_size.rb
使用上述目录方案是标准做法,应避免更改
$LOAD\u PATH
以匹配文件的放置位置,而不是相反


下面是一个关于如何使用bundler创建gem的指南。如果您刚刚开始gem开发,您可能会发现它很有用。

您永远不应该在gem中弄乱
$LOAD\u PATH
。使用RubyGems这样的包管理系统的全部意义在于它可以为您设置环境!@JörgWMittag您会怎么做建议?我遇到了与OP类似的问题,但我不想使用$LOAD\u PATH
/
└── lib/
   └── optimal_bankroll.rb
   └── optimal_bankroll/
      └── version.rb
      └── numeric.rb
      └── bet_size.rb