【问题标题】:Pass the `Rails` constant into a config file?将“Rails”常量传递到配置文件中?
【发布时间】:2013-11-13 23:08:52
【问题描述】:

我正在使用 puma 应用服务器,它在config/puma.rb 有一个配置文件:

path = "/home/starkers/Documents/" + Rails.application.class.parent_name + "/tmp/puma/"

threads 0,20

environment "production"


daemonize true
bind  "unix://" + path + "socket/puma.sock"
pidfile path + "pid/puma.pid"
state_path path + "pid/puma.state"

当运行puma -C config/puma.rb 加载此文件并启动应用程序服务器时,除了Rails.application.class.parent_name 之外,一切正常。

你能想到将常量放入 puma.rb 文件吗?如果做不到这一点,我想一个解决方法可以获取根目录名。

我也想在配置中使用这个属性, Rails.root,但我需要输入 Rails 常量!我需要使用require吗?

【问题讨论】:

    标签: ruby-on-rails application-server puma


    【解决方案1】:

    您将需要加载整个 Rails 应用程序才能访问该对象。您应该可以在 puma.rb 顶部使用 require 'config/environment' 来执行此操作。

    【讨论】:

    • 谢谢。我知道这会减慢进程,但在服务器启动时只有一次。
    • 没关系,但如果有人能想办法只加载 Rails 常量而不是整个环境,那就太好了。不知道这是否可以做到:)
    • 是的,它肯定会减慢速度。您可能想在不使用 Rails 类的情况下获得相同的东西,也许您可​​以使用 ruby​​ 的 File 类获得所需的东西?
    • 我很确定要让 Rails 保持不变,要么全有,要么全无。
    • 是的,我也这么想。我正在使用 Ruby Dir 常量来获得我想要的东西。我认为它的工作,感谢您的建议!
    猜你喜欢
    • 2015-03-15
    • 2018-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-23
    • 2020-07-26
    • 2021-12-22
    相关资源
    最近更新 更多