我们有 UAT 和生产环境来运行 rails 应用程序。UAT 使用 RAILLS_ENV=uat 和 RAILS_ENV=production 为生产服务器运行应用程序。对于部署,我们在本地机器上编译资产并将所有内容复制到这些服务器上,这样我们就不必在 UAT 和生产服务器上编译资产。
现在,我发现如果我设置 config.assets.debug = true,我必须使用与我在资产编译时指定的 env 相同的 RAILS_ENV 运行 rails 应用程序。否则,我会收到以下错误。
ExecJS::RuntimeUnavailable in Welcome#index
Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
(in /opt/myapp/app/assets/javascripts/ping.js.coffee)
例如,如果我编译如下资产:
rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets --trace
并使用 config.assets.debug = true 将编译资产复制到 UAT 服务器(其中 RAILS_ENV 为 uat),它不适用于错误。
如果我设置 config.assets.debug = false 或使用 RAILS_ENV=production 运行应用程序,它工作正常。但是,我不明白为什么在设置 config.assets.debug = true 时不同的 RAILS_ENV 会出现问题。
谁能解释它们之间的关系?