无法访问 class 模块内部:"Main.rb:2:in `<main>': uninitialized constant"

Cannot access class inside module: "Main.rb:2:in `<main>': uninitialized constant"

我是 ruby 语言的新手。

我只需要执行一个用ruby编写的程序。

我退房了this small project。然后看到它包含一个 gemfile 并执行以下步骤:

# Fist installed what I believe is needed
sudo apt install ruby-full
sudo gem install bundler

cd colorscore
bundle install --path vendor/bundle

然后按照 README.md 上的建议创建了一个文件,内容为:

include Colorscore
histogram = Histogram.new('test/fixtures/skydiver.jpg')

# This image is 78.8% #7a9ab5:
histogram.scores.first # => [0.7884625, RGB [#7a9ab5]]

# This image is closest to pure blue:
palette = Palette.from_hex(['ff0000', '00ff00', '0000ff'])
scores = palette.scores(histogram.scores, 1)
scores.first # => [0.16493763694876, RGB [#0000ff]]

并执行:

bundle exec ruby Main.rb

我得到的错误是:

Main.rb:2:in `': uninitialized constant Histogram (NameError)

似乎Main.rb 文件读取了Colorscore 模块,但无法访问其中的Histogram class。

我做错了什么?


版本:

ruby -v
# ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]
bundle -v
# Bundler version 2.1.4

感谢@Olkin/@BobRodes 的评论,我已经解决了这个问题:

我必须在 Main.rb

的顶部添加:require 'colorscore'