如何使用字符串插值访问 Rails 应用程序配置数据
How to access the Rails application configuration data with string interpolation
我在 config/application.rb 中设置了我的第三方凭据,例如密钥、UUID 和其他值。
config.username = "username"
config.uuid = "uuid"
config.yyy = "yyy"
为了获取它们,我必须写多行来获取数据
Rails.application.config.key
Rails.application.config.UUID
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 的未定义方法 `v' (或) SyntaxError ( (irb):1919: 语法错误,意外 tSTRING_BEG)
...屁股; Rails.application.config."#{v}"
在不存在其他机制的情况下,您可以使用Object#send
或Object#public_send
来调用动态方法名。例如:
Rails.configuration.public_send(v)
如果存在另一种机制,例如方括号表示法、slice
方法,或者获取或转换为散列,则可能被认为是更可取的。在这种情况下我没有看到明显的。
您可能想要解决问题的另一种方法是将相关配置存储在散列中:
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 credentials。您可以在凭据文件中的密钥下添加您的相关信息,并在获得上述优势的同时确保您的数据安全。
我在 config/application.rb 中设置了我的第三方凭据,例如密钥、UUID 和其他值。
config.username = "username"
config.uuid = "uuid"
config.yyy = "yyy"
为了获取它们,我必须写多行来获取数据
Rails.application.config.key
Rails.application.config.UUID
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 的未定义方法 `v' (或) SyntaxError ( (irb):1919: 语法错误,意外 tSTRING_BEG) ...屁股; Rails.application.config."#{v}"
在不存在其他机制的情况下,您可以使用Object#send
或Object#public_send
来调用动态方法名。例如:
Rails.configuration.public_send(v)
如果存在另一种机制,例如方括号表示法、slice
方法,或者获取或转换为散列,则可能被认为是更可取的。在这种情况下我没有看到明显的。
您可能想要解决问题的另一种方法是将相关配置存储在散列中:
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 credentials。您可以在凭据文件中的密钥下添加您的相关信息,并在获得上述优势的同时确保您的数据安全。