从helper模块访问Sinatra设置



我有一个继承自Sinatra::Base的类App和我在App中与helpers AppHelper一起使用的模块AppHelper。如何从AppHelper访问App中定义的设置?

下面是一些示例代码:
# app.rb
require "sinatra"
require "./helper"
class App < Sinatra::Base
  set :message, "Hello, World!"
  helpers AppHelper
  get "/" do
    helper_method
  end
end
if __FILE__ == $0
  App.run! port: 4567
end

下面是帮助器:

# helper.rb
module AppHelper
  def helper_method
    settings.message
  end
end

不幸的是,这会产生

NoMethodError at /
undefined method `message' for App:Class

我如何从我的助手模块访问设置?

尝试切换依赖项的顺序:

helpers AppHelper
set :message, "Hello, World!"

我的实际代码与我的示例有点不同(我认为这无关紧要)。我在config.ru中定义了我的设置,所以dax的答案不适用于我的应用程序。我能够通过使用Sinatra::Application.settings而不是settings来解决这个问题。

最新更新