【问题标题】:rails asset pipeline production precompilerails 资产管道生产预编译
【发布时间】:2013-05-08 00:29:57
【问题描述】:

我有一个目录projName/vendor/assets/bootstrap/css/ 我处于生产模式。 production.rb 包含:config.assets.precompile << /(^[^_\/]|\/[^_])[^\/]*$/ 当我运行 rake assets:precompile 我明白了 projName/public/assets/css/ 但我想要projName/public/assets/bootstrap/css/ 我不明白为什么没有引导目录。 实际上,public assets/ 中缺少 vendor/assets 和 app/assets 下的所有顶级目录

【问题讨论】:

  • 你希望与那个正则表达式匹配什么?
  • 您是否正在尝试将 twitter 引导程序包含在您的 css 中。如果是这样,只需在您的视图使用的 scss 文件顶部添加 @import "bootstrap";

标签: ruby-on-rails asset-pipeline assets precompile


【解决方案1】:

已编译的资产将写入config.assets.prefix 中指定的位置。默认情况下,这是public/assets 目录。

要理解这一点,您必须首先了解预编译是什么以及做什么。让我解释一下

当你运行时(一个 rake 任务)

rake assets:precompile

它将在您的应用程序文件夹中创建一个public 文件夹,该文件夹将编译您的所有资产清单(即您的application.cssapplication.js

这到底是怎么发生的?? -> Rails 捆绑了一个 rake 任务,它将编译所有这些。 rake 任务如上所示。

已编译的资产被写入config.assets.prefix 中指定的位置。默认情况下,这是public/assets 目录。

用于编译文件的默认匹配器包括 app/assets 文件夹中的 application.js、application.css 和所有非 JS/CSS 文件(这将自动包括所有图像资产),包括您的 gem。

这正是该正则表达式的含义(将所有内容包含在您的 app/assets 文件夹中),您也可以明确地提供它,如上面的答案所示。

希望这会有所帮助。

这里有几个链接供您参考

http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets

http://dennisreimann.de/blog/precompiling-rails-assets-for-development/

【讨论】:

    【解决方案2】:

    那个正则表达式是什么意思?如果你想预编译所有东西,试试这个。

    config.assets.precompile = ['*.js', '*.css']
    

    【讨论】:

    • 这包括coffee、sass、sccs、slim、haml等吗?
    【解决方案3】:

    其实,如果你想预编译所有东西,试试这个:

    def precompile?(path)
      %w(app lib vendor).each do |asset_root|
        assets_path = Rails.root.join(asset_root, 'assets').to_path
        return true if path.starts_with?(assets_path)
      end
      false
    end
    
    # Precompile all assets under app/assets (unless they start with _)
    Rails.application.config.assets.precompile << proc do |name, path|
      starts_with_underscore = name.split('/').last.starts_with?('_')
      unless starts_with_underscore
        path = Rails.application.assets.resolve(name).to_path unless path # Rails 4 passes path; Rails 3 doesn't
        precompile?(path)
      end
    end
    

    (基于code in the Rails Guide。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-01
      • 2012-05-20
      • 2016-10-14
      相关资源
      最近更新 更多