给出以下代码:
Test
Base
这可以按预期工作,输出:
# lib/backup.rb
require_relative 'backup/destination/base'
module Backup; end
# lib/backup/destination/base.rb
require_relative 'test'
module Backup
module Destination
class Base
def initialize
puts 'Base'
end
end
end
end
# lib/backup/destination/test.rb
module Backup
module Destination
class Test < Base
def initialize
puts 'Test'
super
end
end
end
end
但是,如果我这样分开:
require_relative 'lib/backup'
并执行以下(来自irb):
NameError: uninitialized constant Backup::Destination::Base
from /lib/backup/destination/test.rb:3:in `<module:Destination>'
from /lib/backup/destination/test.rb:2:in `<module:Backup>'
from /lib/backup/destination/test.rb:1:in `<top (required)>'
from /lib/backup/destination/base.rb:1:in `require_relative'
from /lib/backup/destination/base.rb:1:in `<top (required)>'
from /lib/backup.rb:1:in `require_relative'
from /lib/backup.rb:1:in `<top (required)>'
from (irb):1:in `require_relative'
我收到此错误:
var submits = "=" + JSON.stringify(data);
$.ajax({
type: "POST",
url: serviceURL,
data: submits
});
我错过了什么?
注意:如果不添加更多详细信息,我无法发布上述内容。愚蠢的功能,因为在这种情况下代码值得千言万语。 (此文本允许发布问题)
答案 0 :(得分:1)
问题在于,在定义test.rb
课程之前,您需要Base
。一种可能的解决方案是将您的需求移至base.rb
的底部。
另一种可能的解决方案是从base
中删除您的要求,并从backup
开始按正确的顺序要求这两个文件。
答案 1 :(得分:0)
进行了以下更改以解决问题:
# lib/backup.rb
require_relative 'backup/destination/base'
require_relative 'backup/destination/test'
module Backup; end
从require_relative
删除了lib/backup/destination/base.rb
声明。这修复了require_relative
语句的顺序。我错误地认为在执行任何操作之前都需要这些文件。