【问题标题】:Make assets in production behave as in development mode使生产中的资产表现得像在开发模式中一样
【发布时间】:2017-02-18 09:26:01
【问题描述】:

我有一个需要不断更改代码、样式和 JavaScript 的应用程序。它供管理员使用。因此,将其留在生产环境中会更容易,就像在开发模式下一样 - 无需编译资产,更新时重新启动服务器......

另外,我需要在每次页面加载时重新加载所有代码和资产。无需编译更新。

问题。即使我将所有配置从 /config/environments/development.rb 复制到 /config/environments/production.rb - 在生产 Rails 仍会在 /tmp/ 目录中搜索已编译的资产。如何让它像在开发中一样处理资产?

server: nginx
rails version: 4.0

【问题讨论】:

标签: ruby-on-rails


【解决方案1】:

它认为你需要在生产中包含开发gem,因为在后台加载资产、代码等的过程不是由rails核心而是由特定的gem承担的,请参阅https://github.com/rails/spring for rails 5

在我的 gemfile 中有:

group :development do
  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
  gem 'spring-watcher-listen', '~> 2.0.0'

结束

【讨论】:

  • hmz 现在我无法在 Rails5 上检查此方法,因为当前应用程序在 Rails4 中 :) 但无论如何还是感谢展望未来 :)
  • 我也将 spring 用于我的其他 Rails 4.1.6 项目。检查您的 Gemfile 以查看您用于“加速开发”的内容。如果它与默认 gem 捆绑在一起,在创建 rails 应用程序时,应该适当地对其进行注释:-)
  • spring 实际上与资产无关,它只是在单独的进程中预加载您的 ruby​​ 代码,因此您的其他任务(如 rspec/rake)会立即在该进程中运行,而无需加载所有内容开始
  • 有问题的是“我需要加载所有代码和资产......”,否则如果只需要重新加载资产,那么config.assets.compile = true 应该可以完成这项工作 (guides.rubyonrails.org/asset_pipeline.html#live-compilation)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多