【问题标题】:Not precompile on certain assets - Rails不对某些资产进行预编译 - Rails
【发布时间】:2013-06-20 00:01:06
【问题描述】:

我有一个 RoR 项目,其中有几个我不希望它们在生产模式下预编译的资产。这些资产由 JS/CSS 文件复合而成,目前它们位于 app/assets/javascript/ism/ 下。

实际上,我不想编译整个 ism 文件夹。尽管在开发模式下,将这些文件保留在那里以与它们一起使用是有用且舒适的,但在生产模式下,它们不应该在那里。在生产模式下,这些文件都被编译(外部)在一个单独的文件中,该文件由 S3 ant 提供,而不是来自 RoR/Nginx。外部编译的文件甚至是手动链接的,而不是通过 RoR。

<script type="text/javascript" src="http://s3.blabla.com/file_compiled.js"></script>

那么,最好的方法应该是什么?

【问题讨论】:

    标签: javascript ruby-on-rails ruby asset-pipeline


    【解决方案1】:

    它并不完美,但是您可以通过将 ism 目录移出资产管道并静态提供它们来防止这些文件被编译。例如,将 /app/assets/javascript/ism/ 移动到 /public/ism/

    如果您根本不希望这些文件用于生产,您只需将 public/ism/* 添加到您的 .gitignore 文件中(假设您使用的是 git)。

    【讨论】:

    • 这就是我的猜测。所以我应该在我想要放置它们的 .html 中手动链接它们,不是吗?听起来不错。我什至应该在条件语句中包含这些链接,以避免在生产模式下使用它们。另一方面,我想在 Git 中忽略它们,但我在小组中工作。因此必须同步这些文件...
    • 是的,这可以工作,在布局模板中,可能类似于:&lt;% if Rails.env.development? %&gt; &lt;script type="text/javascript" src="/public/ism/{{JSFILE}}"&gt;&lt;/script&gt; &lt;% end %&gt;
    猜你喜欢
    • 1970-01-01
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多