2015-10-19 111 views
0

在Rails應用程序中使用Ruby gem中的可配置變量的正確方法是什麼?我們使用時區在這個例子中這很可能是一個常數,但也將使用安裝特定的變量,如home_city在Ruby Gem中使用變量

  1. 常量
    可以在初始化設置常數:

    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 
    
  2. 配置變量

    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 
    
  3. 環境變量:我們寧願在寶石本身不使用環境變量。我們想避免

    self.tz = "#{ENV['TIMEZONE']} Time zone" 
    
  4. 其他

回答

0

做到這一點,最好的辦法是用ActiveSupport::Configurablemodule

有了這個模塊,你可以創建這樣一個配置文件:

/config/initializers/my_gem.rb

MyGem.config do |config| 
    config.timezone = 'BRT' 
end 

This answer可有用了。