我的sinatra应用程序包含在一个gem中。这意味着资源(css/js)存储在gem中。该应用程序会动态生成图像并提供服务;目前将其写入并从public目录中提供服务。
我希望不要将生成的图像写入gem目录,而是写入实现此gem的Web应用程序下的某种“缓存”目录。
Gem已安装在
Gem部署在简单的rack-app中
但是,自定义公共目录的设置仅允许设置一个目录:
我希望不要将生成的图像写入gem目录,而是写入实现此gem的Web应用程序下的某种“缓存”目录。
Gem已安装在
/var/www/TE/shared/gems/ruby/1.8/gems/tubemp-0.6.0
,因此资源位于例如/var/www/TE/shared/gems/ruby/1.8/gems/tubemp-0.6.0/lib/public/css/
。Gem部署在简单的rack-app中
/var/www/TE/current/
,因此我希望从/var/www/TE/current/public
编写和提供缩略图。但是,自定义公共目录的设置仅允许设置一个目录:
set :public_folder, File.join(Dir.pwd, "public")
打破了资产的服务;Dir.pwd是Rack应用程序的目录。Public现在是Rack应用程序下的目录,但这不是资产所在的位置:它们位于gem中的“public”下。
set :public_folder, File.join(gemdir, "public")
中断生成缩略图的服务。
我可以重写应用程序,使其通过Sinatra提供资产或缩略图,但这似乎有些繁琐。
这是唯一的方法吗?还是有办法让Sinatra从两个或更多公共目录中提供静态项目的服务?