【发布时间】:2015-10-19 16:13:27
【问题描述】:
在 Rails 应用程序中使用 Ruby gem 中的可配置变量的正确方法是什么?我们在此示例中使用时区,这可能是一个常数,但也会使用特定于安装的变量,例如 home_city 等。
-
常量
可以在初始化器中设置常量:config/initializer/mygem.rb TIMEZONE = "Eastern Standard"但是,如果在类变量声明中使用,则该变量未定义。
module Foo module Bar class TickTock class_attribute :tz self.tz = "#{TIMEZONE} Time zone" # uninitialized constant Foo::Bar::TickTock::TIMEZONE -
配置变量
config/initializer/mygem.rb config.x.timezone = "Eastern Standard"module Foo module Bar class TickTock self.tz = "#{Rails.configuration.x.timezone} Time zone" # undefined method `configuration` for Foo::Bar::TickTock:Module -
环境变量:我们不希望在 gem 本身中使用环境变量。我们想避免
self.tz = "#{ENV['TIMEZONE']} Time zone" 其他
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 gem initializer