ruby-on-rails - 将 YAML 文件作为常量加载到 Rails Controller 中是否有效?

标签 ruby-on-rails performance yaml

我有几个大型数组需要可用于特定 View 。目前我将这些存储在 YAML 文件中并加载到 Controller 常量中,如下所示。

我假设在环境设置期间 Rails 加载文件时,这个常量存储在内存中,但我的偏执部分想知道每次访问 Controller 时我是否都在访问文件系统。任何人都可以建议这方面的最佳做法吗?

class OnboardingController < ApplicationController

  BRANDS = YAML.load(File.open("#{Rails.root}/config/brands.yml", 'r'))
  STORES = YAML.load(File.open("#{Rails.root}/config/stores.yml", 'r'))

  # ...

最佳答案

I assume that this constant is stored in memory when Rails loads the file during environment setup



是的,当文件被加载/需要时,里面的所有东西都会被执行
并分配。因此它只加载一次。

but the paranoid part of me wonders if I'm hitting the filesystem each time that controller is accessed.



部分正确,在开发模式下,每个常量都未设置
请求,但这在生产中应该无关紧要。

Can anyone suggest best practices in this area?



保持原样,缓存只会将解析转发到第一个请求
而不是在你有时间的启动时,因为老 worker
仍在运行。

关于ruby-on-rails - 将 YAML 文件作为常量加载到 Rails Controller 中是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9825970/

相关文章:

go - 将通用映射转换为 YAML。语言

Java-读取 YAML 文件 - 线程 "main"中出现异常无法在读取器中创建 property=Envs

performance - IE7 有类似 YSlow 的工具吗?

java - 类创建性能影响

javascript - 三个js PERFORMANCE如何让使用图像纹理更快

html - 为什么不从这个 Jekyll _config.yml 文件传递​​样式表变量?

ruby-on-rails - 如何使用 Rails Jbuilder 提取所有属性?

javascript - 从 Rails 5.1 Vue.js webpack 订阅 websocket

ruby-on-rails - 在 Ruby on Rails 中将数组/哈希转换为 YAML

ruby-on-rails - 如何减慢本地 ruby​​ 网络服务器上的文件下载速度?