Ruby加载/需要文件

时间:2012-02-01 14:55:19

标签: ruby file load require

我在Ruby中尝试做的事情相当于PHP的include或require语句。

在PHP中,当您包含或需要文件时,将执行包含文件中的任何PHP代码,并且可以在包含该文件的文件中使用全局范围的变量。

在Ruby中,我有这段代码;

# include file snippet
config = {'base_url' => 'http://devtest.com/'}

# main file
Dir.foreach(BASE_ROOT_PATH + 'config') do |file|
  if !(file == '.' || file == '..')
    filepath = BASE_ROOT_PATH + 'config/' + file
    load filepath
  end
end

config.inspect

我遇到的问题是,当我运行主文件时,它总是出错并出现此错误;

/home/skittles/devtest/bootstrap.rb:24:in `<top (required)>': undefined local variable or method `config' for main:Object (NameError)
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from index.rb:27:in `<main>'

我知道它正在拉入文件,因为它没有丢失任何错误。 我试过加载&amp;要求,两者都有相同的错误。我尝试了config.inspect并输入配置,仍然是同样的错误。

这几乎就像包含的文件没有执行其中的代码。这是正在发生的事情还是我只是做错了什么?

由于

1 个答案:

答案 0 :(得分:2)

config不是全局范围的变量 - 它是局部变量,局部变量范围不会延伸到requireload

如果你确实想要一个全局变量,那么你需要调用它$config - 前缀表示变量是本地的(无前缀),全局($)还是实例变量(@)。常数也可能是合适的。