gpt4 book ai didi

Ruby 将大型源文件分成多个文件

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

我正在编写一个 Ruby 脚本,它应该是一个小东西,但已经变得非常大,大到可以将所有内容都塞进一个源文件中。所以我试图将项目分成不同的文件。我有四个类,我想将每个类放在自己单独的源文件中。

我做了什么:

我把所有的类都移到了它们自己的文件中,所以现在我有了这个

proj/GoogleChart.rb
proj/BarChart.rb
proj/PieChart.rb
proj/GroupedBarChart.rb

现在它们在其他文件中,我在从 GoogleChart 继承的那一行的所有子类中都得到了未初始化的常量 GoogleChart (NameError),即

require 'GoogleChart'
BarChart < GoogleChart

谁能告诉我哪里出了问题?

谢谢

编辑

使用 ruby​​ 版本 1.8.4

我也试过使用绝对路径:

require 'C:/Documents and Settings/proj/GoogleChart.rb' 这仍然会产生一个 NameError

最佳答案

在 Ruby 1.8.x 中,. 是加载路径的一部分。所以你至少应该尝试通过包含类似的东西来调试它:

puts $:
require 'GoogleChart'
class BarChart < GoogleChart
end

并将其加载到 IRB session 中:

  1. 在目录 proj 中打开 session 。
  2. 在那里输入 require 'BarChart'
  3. 查看结果。

对我来说是:

c:\apps\ruby\test\proj>irb
irb(main):001:0> require 'BarChart'
C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/site_ruby/1.8
C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/site_ruby/1.8/i386-msvcrt
C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/site_ruby
C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/vendor_ruby/1.8
C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/vendor_ruby/1.8/i386-msvcrt
C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/vendor_ruby
C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/1.8
C:/Users/mliebelt/.pik/rubies/Ruby-187-p334/lib/ruby/1.8/i386-mingw32
.
=> true

所以 require 对我来说是成功的,. 是路径的一部分(它应该如此)。如您所见,我正在使用 Ruby 1.8.7,我不知道自 1.8.4 以来是否有任何与此处相关的更改。

因此请准确描述您如何运行文件:

  • 您是否打开了 shell 来运行该文件?
  • 那个 shell 的当前工作目录是什么?
  • 您是否通过双击运行它?

它仅在您位于 proj 目录并在那里运行(在您的 shell 路径中有 ruby​​)ruby BarChart.rb 时才有效。

关于Ruby 将大型源文件分成多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7065148/

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