如何从服务访问 Sinatra 自定义设置

How to access Sinatra custom settings from Service

我正在尝试从服务访问我的 Sinatra 应用程序中定义的自定义设置,但我无法执行此操作。

application.rb

require 'sinatra'
require 'sinatra/config_file'

class Application < Sinatra::Base
  register Sinatra::ConfigFile
  config_file 'environment/config.yml'

  set :custom_setting_one, 'some_value'
  ...
  ...
end

config.yml

custom_setting_two: some_other_value

my_service.rb

require 'sinatra'

Class MyService
  def do_something
    Sinatra::Application.settings.custom_setting_one # This throws exception
    Sinatra::Application.settings.custom_setting_two # This throws exception
  end
end

异常:

undefined method `custom_setting_one' for Sinatra::Application:Class

我无法从服务访问任何一个配置变量,但我可以在 application.rb 文件中访问。

如有任何帮助,我们将不胜感激。

谢谢。

您正在尝试访问 Sinatra::Application 中的设置,但您已经自行定义了它们 Application class。如果你改变

Sinatra::Application.settings.custom_setting_one

Application.settings.custom_setting_one

它应该可以如您所愿地工作。将应用程序的名称 class 更改为 Application 以外的名称可能是值得的,以避免这样的混淆。

最后,由于您使用的是 modular style,您可能应该使用 require 'sinatra/base' 而不是 require 'sinatra'