如何读取文件行内容并在Ruby中创建赋值对应变量
问题
需要复用存储了单行配置内容的文本文件,文件内容示例如下:
export NODE_CODE="mio12"
需要在Ruby程序中,按照文本文件里的变量定义,创建对应变量并完成赋值。
实现方案
针对这种固定格式的单行配置,直接做字符串解析提取键值即可,不需要引入额外依赖,参考代码如下:
# 读取配置文件,替换成你实际的配置文件路径 config_content = File.read('./config.env').strip # 匹配export 变量名="变量值"的格式 if match_result = config_content.match(/^export\s+(\w+)="([^"]*)"$/) var_name = match_result[1] var_value = match_result[2] # 按需选一种赋值方式即可 # 1. 存入环境变量,最通用的做法,和shell里export的行为对齐 ENV[var_name] = var_value # 调用方式:puts ENV['NODE_CODE'] => 输出 mio12 # 2. 创建当前作用域的局部变量 binding.local_variable_set(var_name.downcase.to_sym, var_value) # 调用方式:puts node_code => 输出 mio12 # 3. 创建全局变量,不受作用域限制 # eval("$#{var_name.downcase} = var_value") # 调用方式:puts $node_code => 输出 mio12 end
补充说明
- 如果后续配置文件扩展为多行多个export变量,只需要把读取内容改成逐行遍历,每一行套用上面的正则匹配逻辑即可,核心代码不需要改动
- 如果配置值本身包含转义双引号,只需要调整正则里值部分的捕获规则,适配转义场景即可
- 严禁直接使用
eval执行读取到的完整配置行,避免配置文件被篡改后触发任意代码执行的安全漏洞
内容的提问来源于stack exchange,提问作者Juanse Cora
相关产品推荐
相关产品推荐

