我有一个在我的开发机器上运行良好的应用程序,但在我的生产服务器上,它使用断开的链接来提供使用 Paperclip Gem 提供的图像。
生产环境是 Linux(Debian)、Apache、Passenger,我正在使用 Capistrano 进行部署。
该应用程序存储在(指向使用 capistrano 部署的应用程序当前版本的公共文件夹的符号链接):
/var/www/apps/root/appname
但是,当我尝试在生产服务器上访问它时,Apache 错误日志将其显示为它正在查找的路径:
/var/www/apps/root/system
然而,正确的路径是:
/var/www/apps/appname/shared/system
我可用的一个选项是在根目录中创建一个符号链接,将系统引导到正确的路径,但我不想这样做,以防我想在同一个根目录中部署另一个应用程序。
这个请求的 url 是由 rails 生成的,但是 Apache 是获取静态资源(图像文件)的,所以我尝试在我的 config/environments/production.rb 中放置以下内容:
ENV["RAILS_RELATIVE_URL_ROOT"] = '/appname/'
这解决了我遇到的所有其他路径问题,但是当 rails 生成 url(通过 Paperclip gem)时,它似乎没有使用它。
我该如何设置它以便 Paperclip 使用正确的路径并且只使用它生产?