【发布时间】:2014-07-08 15:38:07
【问题描述】:
使用 Apache/Passenger 的 Rails 4.1.1 生产安装配置为在子目录“/myapp”而不是站点的根目录中运行 rails 应用程序。
应用程序中的所有链接都可以正常工作,但在生产环境中对 SCSS 文件中的资产的引用,例如
background-image: image-url('logo.png');
编译成:
background-image: url("/assets/logo-<hash>.png");
代替:
background-image: url("/myapp/assets/logo-<hash>.png");
我在预编译资产时尝试这样做:
RAILS_ENV=production RAILS_RELATIVE_URL_ROOT=/myapp rake assets:precompile
但这没有任何效果。
我还尝试在config/environments/production.env 文件中设置config.relative_url_root,但没有成功。
Rails guides 说要设置 config.action_controller.relative_url_root,但这会导致缺少方法错误。
我最终放弃并使用以下方法将图像嵌入到 CSS 文件中:
background-image: asset-data-url('logo.png');
这可行,但只能完全避免子目录问题。
我知道 Rails 会让你为不遵守约定而付出代价,但在子目录中拥有一个应用程序并不奇怪。
我似乎在这个问题上发表了各种各样的帖子,但很难得到一个直接的答案。对于早期版本的 Rails,它似乎已经修复了几次,但尚不清楚这些修复是否已进入标准 Rails 发行版。
【问题讨论】:
标签: ruby-on-rails-4 deployment subdirectory