sinatra请求范围像PHP

时间:2015-05-10 19:25:42

标签: ruby sinatra

我不确定这是我可以使用的最佳主题名称,但是在sinatra + rack中有没有办法使用类似php + apache方式的类/模块?我的意思是有一种方法可以在请求范围内使用Singleton或任何其他静态类型变量吗?我需要(想要的)是:

class Config # might be just module
    # some methods that are request scoped
    # cant be shared between users/reuqest

    def server_settings
        # possible server dependent settings 
        # can be shared between requests on same server
    end
end

class Something
    def do_thing
        # I would like to access Config class here without passing it as parameter
        # setted up for the current request
    end
end

class MyController < Sinatra::Base
    # request handling, creates Config class, setting up request parameters once

    def handle_it
        Something.new.do_thing
    end
end

这里没有导轨我对我可以做的事情/我可以使用的宝石非常有限。 MyController来自内部框架。我可以延长它。 Php + apache在每个请求都没有任何要求,因此除非您使用会话/ cookie,否则所有代码都是请求。

我之所以要使用它,是为了避免将配置实例(或任何其他类型的数据存储库)作为参数传递给其他所有实例,只需将其“全局”访问即可。

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找类似这样的回答Page Views counter sinatra? tl; dr版本正在使用set

set :my_config_property, 'hello world'