在 Ruby 中编译资产是否需要在部署中完成?为什么不是以前?
Compiling Assets in Ruby does it need to be done in deployment? Why not before?
所以这只是我最近一直在想的一个问题,我似乎在部署等待资产编译时花费了大量时间。
为什么我们不能在我们的开发机器上编译资产并提交到 git 仓库?
我目前正在使用 ruby 2.5.x 和 rails 5.2.4.x 使用带丑化器的资产管道。
有没有办法在开发中做到这一点,从而在部署期间禁用所有资产编译?
非常感谢,
西蒙
第一名:Why can we not compile the assets on our development machines and submit it in the git repo?
我们需要预编译的原因是:
- 压缩资产资源然后缓存一些静态内容,如图像,css等等。
它帮助我们生成两个文件(.css 和 .js)并压缩我们所有的 css 文件事件它是来自供应商的文件:
<script src="/assets/application-908e25f4bf641868d8683022a5b62f54.js"></script>
<link href="/assets/application-4dd5b109ee3439da54f5bdfd78a80473.css" media="screen"
rel="stylesheet" />
它非常有用,但是 It's take time
并且`当您修改某些代码时,它不会实时重新加载资源。您必须重新编译才能应用代码。
-> 所以,这就是为什么你不应该编译 DEVELOPMENT 环境中的资产。
第二名:Is there a way to do this in development and thus disable all asset compilation during deployment?
您还可以通过 运行 此命令在 DEVELOPMENT 上使用预编译:
RAILS_ENV=development bundle exec rake assets:precompile
您可以默认使用开发环境预编译资源
config/development.rb
config.assets.debug = false
谢谢。希望对你有帮助
就我而言,如您所述,我在部署、提交并将其推送到 Github 之前进行了预编译。
然后,我使用 capistrano
gem 部署到生产环境:https://github.com/capistrano/capistrano
这是预编译的命令:
rails assets:precompile
解决方案非常简单
1) 在部署期间禁用资产编译
我正在使用 elastic beanstalk 所以只需要在环境变量中设置它
2)
- 将 /public/assets 文件夹添加到 git
- 或者对于 elastic beanstalk 创建 .ebignore 文件并复制 .gitignore 但删除 /public/assets 条目
3) 部署前运行
- Linux -- RAILS_ENV=development bundle exec rake assets:precompile
- Windows -- 设置 RAILS_ENV=development && bundle exec rake assets:precompile
4) 正常部署代码到服务器
- eb 部署
所以这只是我最近一直在想的一个问题,我似乎在部署等待资产编译时花费了大量时间。
为什么我们不能在我们的开发机器上编译资产并提交到 git 仓库?
我目前正在使用 ruby 2.5.x 和 rails 5.2.4.x 使用带丑化器的资产管道。
有没有办法在开发中做到这一点,从而在部署期间禁用所有资产编译?
非常感谢, 西蒙
第一名:Why can we not compile the assets on our development machines and submit it in the git repo?
我们需要预编译的原因是:
- 压缩资产资源然后缓存一些静态内容,如图像,css等等。
它帮助我们生成两个文件(.css 和 .js)并压缩我们所有的 css 文件事件它是来自供应商的文件:
<script src="/assets/application-908e25f4bf641868d8683022a5b62f54.js"></script>
<link href="/assets/application-4dd5b109ee3439da54f5bdfd78a80473.css" media="screen"
rel="stylesheet" />
它非常有用,但是 It's take time
并且`当您修改某些代码时,它不会实时重新加载资源。您必须重新编译才能应用代码。
-> 所以,这就是为什么你不应该编译 DEVELOPMENT 环境中的资产。
第二名:Is there a way to do this in development and thus disable all asset compilation during deployment?
您还可以通过 运行 此命令在 DEVELOPMENT 上使用预编译:
RAILS_ENV=development bundle exec rake assets:precompile
您可以默认使用开发环境预编译资源 config/development.rb
config.assets.debug = false
谢谢。希望对你有帮助
就我而言,如您所述,我在部署、提交并将其推送到 Github 之前进行了预编译。
然后,我使用 capistrano
gem 部署到生产环境:https://github.com/capistrano/capistrano
这是预编译的命令:
rails assets:precompile
解决方案非常简单
1) 在部署期间禁用资产编译
我正在使用 elastic beanstalk 所以只需要在环境变量中设置它
- 将 /public/assets 文件夹添加到 git
- 或者对于 elastic beanstalk 创建 .ebignore 文件并复制 .gitignore 但删除 /public/assets 条目
3) 部署前运行
- Linux -- RAILS_ENV=development bundle exec rake assets:precompile
- Windows -- 设置 RAILS_ENV=development && bundle exec rake assets:precompile
4) 正常部署代码到服务器
- eb 部署