【问题标题】:Why is the Asset Pipeline re-compiling compiled assets, creating redundantly nested paths?为什么 Asset Pipeline 会重新编译已编译的资产,创建冗余嵌套路径?
【发布时间】:2013-01-24 17:16:45
【问题描述】:

当我将我的应用程序部署到生产环境(使用 capistrano)时,我在资产预编译期间遇到了错误:

  * executing `deploy:assets:precompile'
  * executing "cd /home/ubuntu/projects/Marketplace-web/releases/20130124162353 && bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile"
    servers: ["server_name"]
    [server_name] executing command
*** [err :: server_name] rake aborted!
*** [err :: server_name] File name too long - /home/ubuntu/projects/Marketplace-web/releases/20130124162353/public/assets/assets/assets/assets/assets/assets/assets/assets/assets/assets/assets/assets/assets/widgets/jquery.jcarousel-d505e569ed1040e0b45bc33e0e49f117.js-26b4b41e4a45cb353ba7e39510893ace-93b194138c96579222ca08f9651946a7-43eca25d0cc511b37176bc58d8575e1a-1b97916c47bfa22545013b3751cb59e4-d9043106773924d12596e08b349f00dc-b7b7aa9bf440ca19896b1103d7651728-c40c1f2b8b11e6de163fefea9db6778c.gz+

我在 http://railscasts.com/episodes/335-deploying-to-a-vps?view=comments 上发现了一条评论,说可以通过从我的 config/application.rb 中删除它来解决这个问题:

config.assets.paths << "#{Rails.root}/public"

我删除了它,任务停止重新编译我在 public/assets 文件夹中预编译的静态资产,但我的问题是:为什么它首先要这样做?那条配置行不是要告诉 Rails 在哪里可以找到我的其他未编译的静态资产吗?为什么要尝试编译 config.assets.paths 数组中的资产?我不需要那条线以便 Rails 知道在哪里可以找到我的静态资产吗?

我做错了吗?我应该把我的未编译的静态资产放在哪里,我应该如何告诉 Rails 在哪里可以找到它们?

【问题讨论】:

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


    【解决方案1】:

    查看Rails Assets Configuration Documentation:

    • config.assets.paths 包含用于查找资产的路径。向此配置选项附加路径将导致在搜索资产时使用这些路径。

    不要将 output 目录添加到 input 目录数组中。否则,上一次资产编译运行的输出将作为另一个输入包含到下一次资产编译运行中。

    如果您编写了可编译资产,则它们通常应位于 app/assets 中,否则应位于 vendor/assets 中。为什么不将jquery.carousel.js 放入vendor/assets/javascripts/?

    【讨论】:

    • 哦,谢谢!因此,即使资产不需要资产管道进行任何编译或翻译,我仍然必须通过资产管道运行它,而不仅仅是将其存储在公共目录中?我想我可以看到,这只是我之前并不清楚......对吗?
    • 资产可能不需要从一种源语言编译到另一种目标语言,但无论如何使用资产管道仍然很有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 2012-05-31
    相关资源
    最近更新 更多