行为:
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>
导轨/Capistrano:
这是一个 Rails 3.1 应用程序,使用 Capistrano 部署,资产通过以下方式构建
load 'deploy/assets' (in deploy.rb)
对 config.assets.prefix 等的默认 Rails 设置没有任何更改。
动力树:
通过 dynatree-rails gem 包含在内。Dynatree 在其他方面功能齐全。