Ruby加载/需要文件

Ruby加载/需要文件,ruby,file,load,require,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| i

我在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>'
/home/skittles/devtest/bootstrap.rb:24:in``中:未定义的局部变量或main:Object的方法`config'(NameError)
from:29:in'require'
from:29:in'require'
from index.rb:27:in`'
我知道它在拉文件,因为它没有抛出任何错误。 我尝试加载和请求,两者都有相同的错误。我尝试了config.inspect并放置了config,仍然是相同的错误

这几乎就像包含的文件没有执行其中的代码一样。这是怎么回事还是我只是做错了什么


谢谢

配置
不是一个全局范围的变量-它是一个局部变量,局部变量的范围不会跨越
要求
加载


如果确实需要全局变量,则需要将其称为
$config
——前缀表示变量是本地变量(无前缀)、全局变量($)还是实例变量(@)。常数也可能是合适的。

我可以问一下您想要实现什么吗?导致此错误的原因是以错误的顺序加载所有配置文件。您通常只会加载'environment.rb'文件,而这将加载所有其他人没有说他正在使用Rails的内容……可能与我没有使用Rails的内容重复。我用的是Ruby@PinnyM-我创建了一个包含配置设置的文件,并希望使用主文件中的代码将该文件与该目录中的任何其他文件一起加载。然后,我需要能够访问从包含的文件中读入的变量。@Chowlett,说得好。只是碰巧有一个“配置”目录谢谢你,弗雷德里克!我不知道Ruby有一个表示全局的符号。我更改了配置行,使变量现在为$config。我认为这是有效的。至少现在,当我使用puts$config.to_yaml时,它实际上显示了config变量中的值。