如何使用字符串插值访问Rails应用程序配置数据



我在config/application.rb中设置了第三方凭据,如密钥、UUID和其他值。

config.username = "username"
config.uuid = "uuid"
config.yyy = "yyy"

为了获取它们,我必须写多行来获取数据

Rails.application.config.key

Rails.application.config.UID

Rails.application.config.yyy

我没有使用上面的方法,而是定义了一个数组,其中有一组元素循环通过它,并获得配置值。但我无法获取配置值,因为不允许通过变量获取。让我知道是否有其他

arr = ["key", "uuid", "vv"]
arr.each do |v|
# Fetching the config value from application config
Rails.application.config.v 
# Or
Rails.application.config."#{v}"
end

正在获取一个错误,该错误为#Rails::Application::Configuration:0x0000000152e4f360(或(SyntaxError((irb(:1919:语法错误,意外tSTRING_BEG(…屁股;Rails.application.config#{v} ">

解决问题的另一种方法是将相关配置存储在哈希中:

config.third_party_stuff = { 
username: 'username',
uuid:     'uuid',
yyy:      'yyy'
}

然后你就可以把它全部拔出来了:

third_party_config = Rails.application.config.third_party_stuff
puts "Hey #{third_party_config[:username]}, your uuid is #{third_party_config[:uuid]}"

如果您正在存储敏感信息,请查看rails凭据。您可以将相关信息添加到凭据文件中的密钥下,从而在确保数据安全的同时获得上述优势。

在不存在其他机制的情况下,可以使用Object#sendObject#public_send来调用动态方法名。例如:

Rails.configuration.public_send(v)

如果存在另一种机制,如方括号表示法、slice方法或获取或转换为哈希,则可以认为这是优选的。在这种情况下,我看不出明显的问题。

相关内容

最新更新