0

我将这些行放在我的 Ruby 代码之上,并尝试了多种组合,但都没有奏效。

$:.unshift File.dirname($0)
Dir.chdir(File.dirname($0))

我有一个与 Ocra 创建的 exe 位于同一目录中的配置文件。该文件由此加载:

cnf = YAML.load_file('config.yml')

但是,该文件不会从所需的同一目录加载。我认为,该错误告诉它在 exe 运行时尝试从临时目录加载它。

错误

如何让脚本从与 exe 相同的目录加载 config.yml 文件?

4

1 回答 1

1

Ocra 使用环境变量来存储 .exe 的位置 ENV["OCRA_EXECUTABLE"] 要访问相对于 ruby​​_script.exe 所在位置的文件,您必须将工作更改到那里。以下是一些可能对您有用的代码:

Dir.chdir File.dirname(ENV["OCRA_EXECUTABLE"]) if ENV["OCRA_EXECUTABLE"]

在此行末尾添加“ if ENV["OCRA_EXECUTABLE"]”可以防止脚本在没有 ocra 作为 ruby​​ 文件 (.rb) 的情况下运行时引发错误。它只是检查这个 ENV 是否存在,如果存在,那么你的程序正在你的 ocra EXE 中运行

于 2017-09-01T17:45:17.860 回答