如何在 ruby 上 rails 上的开发环境中预编译资产?
How assets precompile in development environment on ruby on rails?
为什么我们不能在开发环境中预编译资产?我知道sprockets基本上编译了所有assets
当我们进入生产环境时,我们 运行 命令:
rake assets:precompile
但是在开发环境中我们不能做任何事情让它自己编译。
资产编译在两种环境中的行为有何不同?
如果你想在开发环境中预编译资源,你可以使用这个命令:
RAILS_ENV=development bundle exec rake assets:precompile
开发环境默认可以使用config/development.rb
预编译资源
config.assets.debug = false
在大多数情况下你不需要它,因为你的开发过程会更加困难。
每个 Web 应用程序都包含一些图像和 CSS 文件以使其看起来更漂亮,以及一些 JavaScript 文件来处理用户交互和行为。如果资产加载速度更快,Web 应用程序的性能应该会更好。有许多策略可以使资产加载速度更快,例如缩小、压缩 (gzipping)、缓存等。
在开发模式下,资产按照它们在清单文件中指定的顺序作为单独的文件提供。
这个清单 app/assets/javascripts/application.js:
//= require core
//= require projects
//= require tickets
在生产环境中,Sprockets 使用上面概述的指纹识别方案。默认情况下 Rails 假定资产已经过预编译,并将作为静态资产由您的 Web 服务器提供。
在预编译阶段,从编译文件的内容生成 MD5,并在将文件写入光盘时将其插入到文件名中。 Rails 助手使用这些带指纹的名称代替清单名称。
例如这个:
<%= javascript_include_tag "application" %>
<%= stylesheet_link_tag "application" %>
生成如下内容:
<script src="/assets/application-908e25f4bf641868d8683022a5b62f54.js"></script>
<link href="/assets/application-4dd5b109ee3439da54f5bdfd78a80473.css" media="screen"
rel="stylesheet" />
注意:对于 Asset Pipeline,不再使用 :cache 和 :concat 选项,请从 javascript_include_tag 和 stylesheet_link_tag 中删除这些选项。
指纹识别行为由 config.assets.digest 初始化选项控制(生产默认为 true,其他默认为 false)。
为什么我们不能在开发环境中预编译资产?我知道sprockets基本上编译了所有assets
当我们进入生产环境时,我们 运行 命令:
rake assets:precompile
但是在开发环境中我们不能做任何事情让它自己编译。 资产编译在两种环境中的行为有何不同?
如果你想在开发环境中预编译资源,你可以使用这个命令:
RAILS_ENV=development bundle exec rake assets:precompile
开发环境默认可以使用config/development.rb
预编译资源config.assets.debug = false
在大多数情况下你不需要它,因为你的开发过程会更加困难。
每个 Web 应用程序都包含一些图像和 CSS 文件以使其看起来更漂亮,以及一些 JavaScript 文件来处理用户交互和行为。如果资产加载速度更快,Web 应用程序的性能应该会更好。有许多策略可以使资产加载速度更快,例如缩小、压缩 (gzipping)、缓存等。
在开发模式下,资产按照它们在清单文件中指定的顺序作为单独的文件提供。
这个清单 app/assets/javascripts/application.js:
//= require core
//= require projects
//= require tickets
在生产环境中,Sprockets 使用上面概述的指纹识别方案。默认情况下 Rails 假定资产已经过预编译,并将作为静态资产由您的 Web 服务器提供。
在预编译阶段,从编译文件的内容生成 MD5,并在将文件写入光盘时将其插入到文件名中。 Rails 助手使用这些带指纹的名称代替清单名称。
例如这个:
<%= javascript_include_tag "application" %>
<%= stylesheet_link_tag "application" %>
生成如下内容:
<script src="/assets/application-908e25f4bf641868d8683022a5b62f54.js"></script>
<link href="/assets/application-4dd5b109ee3439da54f5bdfd78a80473.css" media="screen"
rel="stylesheet" />
注意:对于 Asset Pipeline,不再使用 :cache 和 :concat 选项,请从 javascript_include_tag 和 stylesheet_link_tag 中删除这些选项。
指纹识别行为由 config.assets.digest 初始化选项控制(生产默认为 true,其他默认为 false)。