【问题标题】:Rails 3.2.11 asset precompile fails if threadsafe! enabled如果线程安全,Rails 3.2.11 资产预编译将失败!启用
【发布时间】:2013-03-04 01:15:39
【问题描述】:

我在 Rails 3.2.11 和 ruby​​ 1.9.3.125 上

如果线程安全,我的应用程序在开发和生产中都可以正常工作!关闭

使用线程安全!启用我在预编译期间收到错误,在我的资产中 assetssolutions.js.erb(这是应用程序的主 js 文件)我使用 下一行中的工单类 if ($('#workorder_worktype').val()=='')

使用线程安全!在预编译时无法找到该类,我已经进行了一些研究,我认为这可能与 Rails 在线程安全的情况下关闭急切加载有关!开启

如何包含 Workorder 类以使预编译工作?

错误如下:

c:/rails3/ruby/bin/ruby.exe c:/rails3/Ruby/bin/rake assets:precompile:all RAILS_ ENV=生产 RAILS_GROUPS=资产 耙中止! 未初始化的常量#::Workorder (在 C:/rails3/applications/assetsolutions/app/assets/javascripts/preloaded/ass etsolution.js.erb) C:/rails3/applications/assetsolutions/app/assets/javascripts/preloaded/assetsolu tion.js.erb:763:in `evaluate_source' 任务:TOP => assets:precompile:primary (通过使用 --trace 运行任务查看完整跟踪) 耙中止! 命令失败,状态为 (1):[c:/rails3/ruby/bin/ruby.exe c:/rails3/Ruby...]

任务:TOP => 资产:预编译 (通过使用 --trace 运行任务查看完整跟踪)

Tnx 法比奥

【问题讨论】:

  • 当您处于开发环境时,只需检查您的浏览器控制台...并且很可能任何 js 文件中都有错误。
  • 嗯...不,在开发中我看不到任何错误...并且所有工作都按预期进行...但即使在生产中,如果我不激活线程安全!附录:我使用了一种解决方法来替换 .js 中对 Workorder 的调用,现在我可以进行预编译,但在我看来,该应用程序仍然只使用一个线程,因为如果我在选项卡上开始长时间操作然后尝试使用另一个选项卡来使用它被冻结的应用程序,而在 2.3.8 中它不是......有什么想法吗?
  • P.S.与 puma 和 thin --threaded 具有相同的行为

标签: ruby-on-rails-3 thread-safety assets eager-loading precompile


【解决方案1】:

我刚刚在 Rails 3.2.13 应用程序上遇到了同样的问题,我通过将 config.eager_load = true 添加到我的 config/environments/production.rb 文件中解决了这个问题。这也解决了我在 rake 不加载模型时遇到的急切加载问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 2021-11-12
    • 2014-06-27
    相关资源
    最近更新 更多