【问题标题】:Rails - how to make global objectRails - 如何制作全局对象
【发布时间】:2012-04-11 01:28:07
【问题描述】:

我想在 Rails 应用程序启动时解析一次 XML 文档。 它被解析为一个对象,我希望这个对象可以从任何地方、任何用户会话中访问。 如何正确实现这个应用级对象?

【问题讨论】:

  • 可能是,但定义了一些小常量。这种方法适用于大型物体吗?
  • 我想要 MyApp::Application.GLOBAL_OBJECT
  • 我认为您应该在 config 文件夹的初始化程序中的某个位置进行操作。
  • 我问的不是在哪里做,而是把结果放在哪里。

标签: ruby-on-rails global-variables application-variables


【解决方案1】:

如果您只需要来自 xml 的信息,并且可以将其作为简单的哈希/数组/字符串,并且不需要特定的对象,您可以为此使用 Settingslogic - 通常它需要 yaml 文件,然后在整个过程中都可以访问整个应用程序。例如,你定义一个类:

# app/models/settings.rb
class Settings < Settingslogic
  source "#{Rails.root}/config/application.yml"
  namespace Rails.env
end

# config/application.yml
defaults: &defaults
  global: 'Hello'

development:
  <<: *defaults
  more:
    data: [1, 2, 3]

然后你可以像这样在任何地方使用它:

> Settings.global
=> "Hello"
> Settings.more.data
=> [1, 2, 3]

【讨论】:

    猜你喜欢
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-09
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多