Ruby 访问全局Sinatra对象
我正试图在我的Sinatra应用程序中编写一个助手类。我试图以某种方式访问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
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
对象?