行動:
Rails アプリは、dynatree プラグインのアセットを除いて、すべてのアセットを正常に提供します。つまり、私のツリーにはフォルダー アイコンや線などがありません。Firebug は、アセットを参照するときに 404 エラーを報告します。
NetworkError: 404 Not Found - http://<production-host>/assets/dynatree/skin/icons-bf773ee37964ed4c51011537fefa5047.gif
アセットがそのプリコンパイル済みの名前でそのディレクトリに存在することを確認しました。
複数の仮想ホストを使用しているため、アセットの URL にはアプリのディレクトリ名を含める必要があると思います。つまり、次のようになります。
http://<production-host>/*houston*/assets/dynatree/skin/icons-bf...
(アスタリスクは強調のために私自身のものです。)
assets サブディレクトリにある jqueryui 画像のようなものの URL にアクセスして確認しました。URL にアプリ名を含めると、画像は問題なく見つかります。それがないと、404 エラーが発生しますが、これは完全に理にかなっています。
では、dynatree がアセット ディレクトリへのフル パス名を使用しないのはなぜでしょうか? ホスト名と /assets を連結するだけです。初期化時にjquery/dynatreeコードが適切なホスト名を取得していないと思います。何か案は?
設定:
Apache/Passenger を介した複数のホストのセットアップ:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/webapps
<Directory /var/webapps>
AllowOverride None
</Directory>
RailsEnv production
RackBaseURI /houston
<Directory /var/webapps/houston>
Options -MultiViews +FollowSymLinks
Allow from all
</Directory>
レール/カピストラーノ:
これは Rails 3.1 アプリで、Capistrano を使用してデプロイされ、アセットは次の機能によって構築されます。
load 'deploy/assets' (in deploy.rb)
config.assets.prefix などのデフォルトの Rails 設定に変更はありません。
ダイナツリー:
dynatree-rails gem を介して含まれます。それ以外の場合、Dynatree は完全に機能します。