首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails资产管道,带有路径前缀的子URI部署,image_tag

Rails资产管道,带有路径前缀的子URI部署,image_tag
EN

Stack Overflow用户
提问于 2012-01-09 16:39:30
回答 2查看 3.6K关注 0票数 2

我有一个Rails 3.1应用程序。

我是通过客运将其部署到SubURI,而不是将其部署到URI根。例如,应用程序根目录实际上以http://somewhere.com/application的形式访问。

我的应用程序中有一个stylesheet.css.erb,它使用资产管道来设置一个背景图像

代码语言:javascript
复制
<%= asset_path 'something.gif' %>

然而,当我运行rake assets:precompile时,它会预编译它到/assets/something.gif,而不是/application/assets/something.gif --因为当我从命令行运行rake任务时,它还不知道路径前缀("/application")在SubURI的乘客下运行时是有效的。

处理这件事的正确方法是什么?有没有方法告诉资产:预编译任务使用特定的路径前缀,因为我们知道在预编译时实际上要部署到路径前缀?

  • 注意:路径是由实际的活动应用程序生成的,例如布局中的stylesheet_link_tag 'application',使用路径前缀正确生成的do。因此,资产管道在运行时确实尊重路径前缀。问题是,当我运行资产:预编译时,它无法知道最终前缀是什么,也就是我运行它的方式。我该怎么说?)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-09 17:09:36

这一点以前已经出现过:似乎是链轮中的一个限制,现在它被合并到主模块:https://github.com/rails/rails/pull/2977中。

我想你需要设置RAILS_RELATIVE_URL_ROOT

资料来源:

票数 1
EN

Stack Overflow用户

发布于 2012-01-11 16:16:28

好吧,我想也许我会接受@Tigraine给他因果报应,因为他把我引向了解决方案。

但是,在当前发布的Rails 3.1.3 (它可能在主版中)中,仅仅设置RAILS_RELATIVE_URL_ROOT是不够 --它不会做任何事情。您需要实际猴子补丁Rails来添加此功能。

实际上,我最后做的是在他指出的答案中给出的解决方案的一个修改版本。我使用alias_method_chain尽可能少地复制和粘贴现有的Rails逻辑:https://gist.github.com/1595405

@Tigraine建议大师有个解决办法,我还没有证实这一点。如果是这样的话,我不知道它将发布什么rails (下一个3.1.x,3.2,甚至更晚的版本?),或者它将采取什么样的形式(RAILS_RELATIVE_URL_ROOT)?如果有人知道这些问题的答案,也许在将来发布这样一个版本时,请添加评论或答复。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8791862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档