【问题标题】:How to use a Rails environment variable in Capistrano deploy script?如何在 Capistrano 部署脚本中使用 Rails 环境变量?
【发布时间】:2009-11-26 19:05:41
【问题描述】:

如果我的 Rails environment.rb 中有一个常量,例如...

SOME_CONSTANT = 3

是否可以在我的 capistrano deploy.rb 中以某种方式访问​​它?看起来很简单,但我不知道怎么做。

【问题讨论】:

  • 你必须加载 Rails 环境(通过要求 environment.rb),我想。您究竟想在这里实现什么目标?
  • 这个常量在哪里定义?什么文件?是在类还是模块中?

标签: ruby-on-rails capistrano


【解决方案1】:

这最终奏效了:

创建了一个文件config/initializers/my_constant.rb

将我的常量放在那里(rails 会自动将文件加载到那里,以便我可以在我的应用程序中使用该常量)

然后在 deploy.rb 中添加了load 'config/initializers/my_constant',所以它也可以在那里使用。

【讨论】:

  • 通过 ENV 或在 config.rb 文件本身中定义常量有什么区别?
【解决方案2】:

您应该通过 ENV[] 哈希访问它(这是一个 Ruby 的东西),这是一个使用 TERM 环境变量的示例。

puts "Your Terminal is #{ENV['TERM']}"

如果你需要一个 ruby​​ 常量,你应该从你的 rails 环境中加载它:

require 'config/environment'

注意这会加载你的整个应用程序环境,你应该考虑使用 AppConfig 或 SimpleConfig(在此处插入其他工具)之类的东西来存储配置,然后你只需要加载处理你的配置文件的工具。

【讨论】:

    【解决方案3】:

    为什么不在 lib/ 中的文件中定义这些常量,然后在 Rails 应用程序和 Capfile 中都需要该文件?

    【讨论】:

      【解决方案4】:

      由于该值不仅由 rails 应用程序使用,我可能会将此类配置信息存储为与语言无关的格式(yaml、json、ini、xml),这些格式可以很容易地被不同的工具解析,而不必担心可能的副作用.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-23
        • 2021-08-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-29
        • 1970-01-01
        相关资源
        最近更新 更多