簡體   English   中英

在Ruby Gem中使用變量

[英]Using variables in a Ruby Gem

在Rails應用程序中使用的Ruby gem中使用可配置變量的正確方法是什么? 在此示例中,我們使用時區,它可能是一個常量,但也會使用特定於安裝的變量,例如home_city等。

  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. 環境變量:我們不希望在gem本身中不使用環境變量。 我們想避免

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

最好的方法是使用ActiveSupport::Configurable 模塊

使用此模塊,您可以創建如下配置文件:

/config/initializers/my_gem.rb

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

這個答案也可能有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM