如何从Service访问Sinatra自定义设置

时间:2016-04-08 19:26:48

标签: ruby sinatra

我正在尝试从服务访问我的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 文件中访问。

任何帮助都会非常感激。

感谢。

1 个答案:

答案 0 :(得分:3)

您尝试访问Sinatra::Application中的设置,但您已在自己的Application课程中对其进行了定义。如果你改变了

Sinatra::Application.settings.custom_setting_one

Application.settings.custom_setting_one

它应该按预期工作。将应用程序类的名称更改为Application以外的其他名称可能是值得的,以避免这样的混淆。

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