Ruby 访问全局Sinatra对象

Ruby 访问全局Sinatra对象,ruby,sinatra,web-frameworks,Ruby,Sinatra,Web Frameworks,我正试图在我的Sinatra应用程序中编写一个助手类。我试图以某种方式访问Sinatra属性,但总是得到nil。我的代码如下: app.rb: configure do enable :sessions set :session_secret, "STHSTHSTH" # DATABASE_URL is provided by environment, or can be set on the command line # For instance: DATABASE_URL=m

我正试图在我的Sinatra应用程序中编写一个助手类。我试图以某种方式访问Sinatra属性,但总是得到
nil
。我的代码如下:

app.rb:

configure do
  enable :sessions
  set :session_secret, "STHSTHSTH"
  # DATABASE_URL is provided by environment, or can be set on the command line
  # For instance: DATABASE_URL=mysql://localhost/freecoins rackup
  # will run the app with the database at localhost/freecoins.
  DataMapper.setup(:default, ENV['DATABASE_URL'])
  # These set it up to automatically create/change tables when
  # their models are updated.
  DataMapper.auto_migrate!
  DataMapper.auto_upgrade!

  # Here we read in the config file and parse the JSON from it.
  config = JSON.parse(File.read("config/config.json"))

  # Then we loop through each element in the JSON object and
  # assign it to Sinatra's settings.
  # They are accessed via settings.key anywhere in the app,
  # especially in some of the routes.
  config.each do |k, v|
    set k.to_sym, v
  end
end

set :views,  'views'

Dir["routes/*.rb"].each {|file| require_relative file }
Dir["models/*.rb"].each {|file| require_relative file }
Dir["helpers/*.rb"].each {|file| require_relative file }

# This has to be called once all the models have been defined.
DataMapper.finalize
助手类:

class WalletHelper
    @currency = nil
    @client = nil
    def initialize(currency)
        puts $settings #settings is nil here
    end
end

如何访问应用程序的属性,例如设置,正如我在
get
blocks中所做的那样?

你应该试试
Sinatra::Base.settings
你应该试试
Sinatra::Base.settings

你应该试试
Sinatra::Base.settings

你应该试试
Sinatra::Base.settings
你可能想看看
Sinatra.register
Sinatra.helpers


有关更多详细信息,请参见。您可能希望查看
Sinatra.register
Sinatra.helpers


有关更多详细信息,请参见。您可能希望查看
Sinatra.register
Sinatra.helpers


有关更多详细信息,请参见。您可能希望查看
Sinatra.register
Sinatra.helpers


有关更多详细信息,请参见

Sinatra::Base。设置
是一个对象,但与我在
get
块中获得的对象不同。它看起来像一个空的。如果我也使用
Sinatra::Base.set
来设置它们,那么它就工作了。这是我们能提供的最佳解决方案吗?
Sinatra::Base.settings
是一个对象,但与我在
get
块中得到的对象不同。它看起来像一个空的。如果我也使用
Sinatra::Base.set
来设置它们,那么它就工作了。这是我们能提供的最佳解决方案吗?
Sinatra::Base.settings
是一个对象,但与我在
get
块中得到的对象不同。它看起来像一个空的。如果我也使用
Sinatra::Base.set
来设置它们,那么它就工作了。这是我们能提供的最佳解决方案吗?
Sinatra::Base.settings
是一个对象,但与我在
get
块中得到的对象不同。它看起来像一个空的。如果我也使用
Sinatra::Base.set
来设置它们,那么它就工作了。这是我们能提供的最佳解决方案吗?您在哪里创建新的
WalletHelper
对象?您在哪里创建新的
WalletHelper
对象?您在哪里创建新的
WalletHelper
对象?