从Ruby中包含的文件中访问变量

如何访问包含文件中定义的变量?

# inc.rb foo = "bar"; # main.rb require 'inc.rb' puts foo # NameError: undefined local variable or method `foo' for main:Object 

您无法访问其定义范围之外的本地 – 本例中的文件。 如果您想要跨越文件边界的变量,那么除了本地之外,还要做任何事情。 $fooFoo@foo都会奏效。

如果你真的不想在符号上放置任何类型的装饰(因为你不喜欢它的读取方式,也许),一个常见的黑客只是将它定义为一种方法: def foo() "bar" end

我接受了Chuck的答案,因为它是一个不错的解决方案,但我实际上使用了一种不同的方法,我认为我会分享。 这是非常hacky,但对我的目的很有用。 我需要扫描一个包含数百个文件的目录,每个文件都创建一个具有相同名称的对象,然后转储有关每个对象的一些信息。 对于任何严重和非临时目的,我建议这样做!

 foo = "" eval File.open('inc.rb').read puts foo # "bar" 

我通常只是将它们定义为方法。 与nickf所说的相似。

文件1:

 def static_path '/opt/foo' end 

文件2:

 static_path 

然后只需添加一个:

require_relative 'file path/file name'require_relative 'file name' <=如果文件在同一个目录中。

到您要使用方法/变量的文件中。