【问题标题】:Why is Rails not precompiling javascripts and stylesheets inside the vendor directory?为什么 Rails 不在供应商目录中预编译 javascript 和样式表?
【发布时间】:2013-05-01 00:05:46
【问题描述】:
在我的项目中,vendor/assets/javascripts 和 vendor/assets/stylesheets 目录中有第三方 JavaScript 和 Css 文件。在开发模式下,我可以使用 javascript_include_tag 和 stylesheet_include_tag 方法引用这些目录中的资产。
但是,当我运行 rake assets:precompile 命令时,这些脚本没有被预编译,随后无法在生产中访问。
有人能说一下为什么vendor 目录中的资产会被 rake 任务忽略吗?
【问题讨论】:
标签:
ruby-on-rails
ruby
ruby-on-rails-3
ruby-on-rails-3.1
【解决方案1】:
我能够回答我自己的问题。
这对我来说并不明显,但确实有道理。除了 application.css 和 application.js 文件之外,所有其他 .js/.css 文件都会被预编译 rake 任务忽略。因此,只要在 application.js/.css 文件中使用 //= require name_of_script 约定引用您的脚本和样式表,它们就会很好地附加到相关文件中。
但是,如果您不希望将某些脚本放在 application.js/.css 文件中,那么您需要明确告诉 Rails 您仍然希望使用 config/environment/production.rb 或其他相关运行时环境中的这一行来预编译它们配置文件:
# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
config.assets.precompile += %w( morris.min.js raphael.min.js )