私のsinatraアプリケーションはgemに含まれています。これは、アセット (css/js) が gem に存在することを意味します。このアプリケーションは、オンザフライで生成された画像を書き込み、それらを提供します。現在、パブリックディレクトリに書き込み、そこからサービスを提供しています。
生成された画像を 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 は の単純なラック アプリにデプロイされている/var/www/TE/current/
ため、 からサムネイルを作成して提供することをお勧めし/var/www/TE/current/public
ます。
ただし、カスタム public-dir の設定では、設定できるディレクトリは 1 つだけです。
set :public_folder, File.join(Dir.pwd, "public")
資産の提供を中断します。Dir.pwd は Rack アプリのディレクトリです。Public は Rack-app の下のディレクトリになりましたが、アセットが見つかる場所ではありません。gem の「public」の下に存在します。
set :public_folder, File.join(gemdir, "public")
生成されたサムネイルの配信を中断します。
Sinatra を介してアセットまたはサムネイルのいずれかを提供するようにアプリケーションを書き直すこともできますが、それはかなりのオーバーヘッドのようです。
それが唯一の方法ですか?または、Sinatra に 2 つ以上のパブリック ディレクトリを与えて静的アイテムを提供する方法はありますか?