我正在尝试从服务访问我的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 文件中访问。
任何帮助都会非常感激。
感谢。
答案 0 :(得分:3)
您尝试访问Sinatra::Application
中的设置,但您已在自己的Application
课程中对其进行了定义。如果你改变了
Sinatra::Application.settings.custom_setting_one
到
Application.settings.custom_setting_one
它应该按预期工作。将应用程序类的名称更改为Application
以外的其他名称可能是值得的,以避免这样的混淆。
最后,由于您使用的是modular style,因此您应该使用require 'sinatra/base'
而不是require 'sinatra'
。