在一个地方定义Ruby / RoR中的常量的最佳方法

时间:2017-11-07 08:55:39

标签: ruby ruby-on-rails-3

我有多个类(4-5)使用相同的常量值,比如PI = 3.14。 在Ruby和RoR应用程序中在一个地方定义该常量的最佳方法是什么?

我是否使用给定的Constant构造一个模块并包含在使用它的所有类中?

什么是最佳实践和标准Ruby或RoR方式?

3 个答案:

答案 0 :(得分:6)

不是在任何地方都包含这个常量,你可以在一个地方定义它,然后直接引用它

# config/initializers/constants.rb, for example.
module Constants
  PI = 3.1415926535897932384626433832795028841971
end

# app/models/circle.rb
class Circle
  attr_reader :radius

  def area
    Constants::PI * radius ** 2
  end
end

答案 1 :(得分:2)

所有应用程序类都应位于命名空间下,给定MyApp

所以所有共享常量都可以在MyApp模块中声明:

module MyApp
  APP_CONST_1 = 42
  APP_CONST_2 = 3.14
  # ...
end

class MyApp::User
  def the_answer
    MyApp::APP_CONST_1 # 42
  end
end

答案 2 :(得分:1)

开始使用问题,RubyOnRails有这个漂亮的模式来重构代码。

看看这个:

http://vaidehijoshi.github.io/blog/2015/10/13/stop-worrying-and-start-being-concerned-activesupport-concerns/