Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 如何设置rails应用程序全局可用常量_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 4 如何设置rails应用程序全局可用常量

Ruby on rails 4 如何设置rails应用程序全局可用常量,ruby-on-rails-4,Ruby On Rails 4,我试图定义一个全局常量,我可以从应用程序中的任何地方访问它。为此,我在initializer中创建了一个包含以下内容的文件: APP_CONFIG = YAML.load_file(Rails.root + "config/app_config.yml").with_indifferent_access 从哈姆的角度看,我正在这样做 - if APP_CONFIG[:param] %b HOLA MUNDO 但它说APP_CONFIG没有定义 我在两个地方都试过使用: @@APP_

我试图定义一个全局常量,我可以从应用程序中的任何地方访问它。为此,我在initializer中创建了一个包含以下内容的文件:

APP_CONFIG = YAML.load_file(Rails.root + "config/app_config.yml").with_indifferent_access
从哈姆的角度看,我正在这样做

- if APP_CONFIG[:param]
     %b HOLA MUNDO
但它说APP_CONFIG没有定义

我在两个地方都试过使用:

@@APP_CONFIG
@APP_CONFIG
$APP_CONFIG
没有任何效果,我还尝试了:

 module MyApp
  class Application
   APP_CONFIG = .....
  end
 end
从以下方面来看:

MyApp::Application::APP_CONFIG[:param]
这也是一个错误
未初始化常量MyApp::Application::APP_CONFIG

将其封装在模块中会更好。大概是这样的:

    require 'yaml'

    module AppConfig

      class << self
        def settings
          @settings ||= hash.with_indifferent_access
        end

        def path
          File.join(Rails.root, 'config' , 'app_config.yml')
        end

        def hash
          YAML.load_file(path)
        end
      end
    end
使用该模块,您可以分多个步骤收集数据,并轻松测试每个步骤。这也将更容易扩展行为


我会把它放在app/tools/app_config.rb之类的东西中,如果它放在app/tools/上,它会自动加载到rails 4上?是的。应用文件夹中的所有文件都在应用加载时加载。或者,您可以将其放在lib文件夹中,并将lib添加到应用程序配置的加载路径中。Ha!我今天在WCC用过这个:)
    puts AppConfig.settings['foo']