【问题标题】:How to access application settings from a model in Padrino如何从 Padrino 中的模型访问应用程序设置
【发布时间】:2014-09-15 09:16:20
【问题描述】:

我正在尝试在 Padrino 中做一些基本的事情,但是很多搜索都没有找到任何答案。我正在尝试从模型访问全局设置。我在名为“endpoint”的environments.yaml 文件的“development”部分添加了一行,如何从模型类访问此设置? environment.yaml 是用于这种设置的最佳文件吗?

environments:
  development:
    endpoint: 'http://192.168.56.1:3001'

当我尝试在模型函数中使用“settings.endpoint”时,出现错误:

undefined local variable or method `settings' for Country:Class

【问题讨论】:

    标签: ruby sinatra padrino


    【解决方案1】:

    在 padrino 0.13.2 上测试

    Padrino.mounted_apps[0].app_obj.settings.endpoint

    可能安装了 1 个以上的应用。我尚未使用多个应用程序进行测试。如果您发现更多内容,请发表评论以进行修复:)

    【讨论】:

      【解决方案2】:

      这可能不是您所要求的,但这是我为环境特定的设置解决此问题的方法:

      config/apps.rb中指定设置:

      Padrino.configure_apps do
        set :foobar, 42
      end
      

      然后您应该能够通过以下方式获取值:

      MyApp::App.settings.foobar # => 42
      

      当然,这是假设您的 Padrino 应用程序名为 MyApp(如果您不确定,可以签入 app/app.rb)。

      【讨论】:

        【解决方案3】:

        如果我是你,我会使用环境变量:

        environments:
          development:
            endpoint: <%= ENV["ENDPOINT"] %>
        

        然后在您的 ruby​​ 代码中,您可以使用 ENV['ENDPOINT'] 访问它。

        了解如何使用 Dotenv 等 gem 在 .env 文件中设置环境变量。

        【讨论】:

        • 谢谢,使用环境变量意味着我不需要 yaml 配置文件,所以endpoint: &lt;%= ENV["ENDPOINT"] %&gt; 是多余的。
        • 好吧,我不是 Padrino 方面的专家,但在 Rails 中,无论您是否使用 env var,一些 .yml 文件都是强制性的。
        猜你喜欢
        • 2013-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-23
        • 2010-11-27
        • 2014-08-05
        • 1970-01-01
        相关资源
        最近更新 更多