2

我可以断言 rails/sinatra 应用程序只初始化一次并且所有请求共享同一个应用程序实例吗?还是新请求会产生新的应用程序实例?

是否可以在不使用会话、数据库存储或第三方服务的情况下实例化自定义类并在应用程序生命周期内持久化它们?如果是这样,从线程安全的角度来看,这意味着什么?

我试图弄清楚如何实现基于 Web 的下载管理器,并且我目前正在评估基于 ruby​​ 的框架。

4

1 回答 1

2

我可以断言 rails/sinatra 应用程序只初始化一次并且所有请求共享同一个应用程序实例吗?还是新请求会产生新的应用程序实例?

一般不会。这实际上取决于您的设置。如果您仅在具有重用相同应用程序对象的服务器(又名机架处理程序)的进程上运行,这将起作用。是否使用相同的应用程序实例取决于您使用的 Web 框架。Sinatra::Application例如,如果用作 Rack 端点,Sinatra 会为每个请求创建一个新的应用程序类实例(通常)。

是否可以在不使用会话、数据库存储或第三方服务的情况下实例化自定义类并在应用程序生命周期内持久化它们?如果是这样,从线程安全的角度来看,这意味着什么?

如果你真的想持久化类,你可能需要像磁悬浮这样的东西。但是,我相信您的意思是自定义类的持久化实例。如果您不想使用数据库进行持久性(您确实应该),您可以回退到 PStore,它是 Ruby 附带的。

于 2010-06-07T10:35:10.323 回答