gpt4 book ai didi

Ruby:如何从另一个文件导入变量?

转载 作者:数据小太阳 更新时间:2023-10-29 07:10:51 24 4
gpt4 key购买 nike

我正在尝试创建一个与 compass 一起使用的本地配置文件,这样我们就可以处理开发人员机器上的不同导入路径。到目前为止,我已经尝试将文件导入到异常 block 中,以防它不存在,然后进一步使用该变量:

local_config.rb

VENV_FOLDER = 'venv'

config.rb

VENV_FOLDER = '.'
begin
require 'local_config.rb'
rescue LoadError
end
puts VENV_FOLDER

通常我是一名 Python 开发人员,所以我希望导入将 VENV_FOLDER 的值更改为 venv,但它仍然是 之后。

有没有一种方法可以导入 local_config.rb 以覆盖 VENV_FOLDER 的值?

最佳答案

其他选择:

YAML(或 JSON)

local_config.yml

venv_folder: 'venv'

config.rb

require 'yaml'

VENV_FOLDER = begin
YAML.load_file('local_config.yml').fetch('venv_folder')
rescue Errno::ENOENT, KeyError
'.'
end

puts VENV_FOLDER

类实例变量

您可以将值放在类实例变量中:

local_config.rb

Config.venv = 'venv'

config.rb

class Config
class << self ; attr_accessor :venv ; end
self.venv = '.'
end

begin
require './local_config.rb'
rescue LoadError
end

puts Config.venv

常量

此外,坚持使用带有常量的 ruby​​ 文件,以下内容的意图可能稍微清晰一些,并且避免了必须捕获异常。

local_config.rb

VENV_FOLDER = 'venv'

config.rb

config_file = './local_config.rb'
require config_file if File.file? config_file
VENV_FOLDER ||= '.'

puts VENV_FOLDER

这三种解决方案都有不同的机制来确保即使文件丢失或未按预期设置值也能设置值。希望对你有帮助

关于Ruby:如何从另一个文件导入变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8574206/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com