Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby ApplicationController的副本已从模块树中删除,但仍处于活动状态_Ruby_Rubygems_Ruby On Rails Plugins_Ruby On Rails 2 - Fatal编程技术网

Ruby ApplicationController的副本已从模块树中删除,但仍处于活动状态

Ruby ApplicationController的副本已从模块树中删除,但仍处于活动状态,ruby,rubygems,ruby-on-rails-plugins,ruby-on-rails-2,Ruby,Rubygems,Ruby On Rails Plugins,Ruby On Rails 2,每当两个并发HTTP请求转到my Rails应用程序时,第二个总是返回以下错误: ApplicationController的副本已从模块树中删除,但仍处于活动状态 从这里开始,它给出了一个无用的堆栈跟踪,“我们检查了标准服务器的内容,在ApplicationController上运行了第一个过滤器之前运行了您的第一个过滤器(我检查了;这只是哪个过滤器先运行)”,然后提供以下内容: /home/matchu/rails/torch/vendor/rails/activesupport/lib/a

每当两个并发HTTP请求转到my Rails应用程序时,第二个总是返回以下错误:

ApplicationController的副本已从模块树中删除,但仍处于活动状态

从这里开始,它给出了一个无用的堆栈跟踪,“我们检查了标准服务器的内容,在ApplicationController上运行了第一个过滤器之前运行了您的第一个过滤器(我检查了;这只是哪个过滤器先运行)”,然后提供以下内容:

/home/matchu/rails/torch/vendor/rails/activesupport/lib/active\u support/dependencies.rb:414:in `加载\缺少\常数'

/home/matchu/rails/torch/vendor/rails/activesupport/lib/active\u support/dependencies.rb:96:in `const_失踪'

我假设这是一个普通的回答,并没有说太多

谷歌似乎告诉我,开发Rails引擎的人会遇到这种情况,但我没有这样做。我所做的只是将Rails应用程序从2.2(2.1?)升级到2.3

这个错误的可能原因是什么?我如何才能追踪到底发生了什么?我知道这个问题很模糊,所以其他信息会有帮助吗

更重要的是:我刚刚尝试在“生产”环境中进行测试运行,错误似乎不会持续。那么,这只会影响开发吗?我不需要太担心吗?

奇怪


正在尝试运行“rake rails:update”以确保配置脚本是最新的。您可能需要对照模板应用程序检查现有的错误。

我有此错误,从内存中可以看出,这是修复此错误的三种方法之一

1) 我需要更新mongrel/rack 2) 我从restful身份验证中得到了一个环境变量,我已经从environment.rb迁移到production.rb和development.rb文件中——将它移回environment.rb似乎有帮助
3) will_paginate已经过时了这是Rails 2.3.3中的一个错误:

2-3-stable中有一个补丁(但不完整?):

您有几个选项可以解决此问题:

  • 回到Rails 2.3.2,等待2.3.4的发布,可能在8月底。2.3.3有几个不好的问题,所以这可能是最好的
  • 该问题不应发生在生产模式下,也不应发生在服务器下的开发模式下。如果您在生产模式下的谷歌引擎上遇到这个问题,那么补丁是您唯一的希望。如果它仅处于开发模式,则可以使用精简而不是混合运行本地服务器
  • 如果是谷歌引擎,你可以离开谷歌引擎,以另一种方式托管你的应用程序。不过,这似乎需要做很多工作

祝你好运,这是很多人遇到的一个非常糟糕的bug。

除了其他答案中提到的解决方法外,我还遇到了另外两个:

  • 将“config.cache_classes=false”添加到config/environments/development.rb文件中。这有一个不幸的副作用,即要求您在希望看到更改时重新启动服务器
  • 在引擎的控制器类中添加“unloadable”。看到和

  • 我没有尝试过第二种方法,因为我首先找到了另一种解决方案,但在避免编辑插件代码(如果下载了更新版本的插件代码,则可能会恢复)之间当然有一个折衷,在第二种解决方案中,不必一直重新启动开发服务器,从而使开发更加容易。

    我在rails 2.3.4上的新引擎也遇到了同样的问题,我找到了解决方案


    调用方法解决了我的问题。

    我们调用了名称空间模块中的activerecord模型,该模块覆盖了“name”类方法。Rails希望name方法返回Product::Categories::MilkProducts::Firstproduct,但只获取Firstproduct并抛出错误。因此,如果出现此错误,请首先检查是否重新定义了self.name

    • Firstproduct.method(:name).owner应该是模块
    • Firstproduct.method(:name).source\u位置
    资料来源:

    module Product::Categories::MilkProducts
      class Base
        def self.name
          self.to_s.demodulize
        end
      end
      class Firstproduct < Base
        self.product = Product.first
      end
    end
    
    模块产品::类别::乳制品
    阶级基础
    def self.name
    自我解调
    结束
    结束
    class Firstproduct
    rake任务没有输出=/Damn。我以前从未见过这种情况,我明白你所说的引擎导致错误的意思。希望其他人能帮忙。对不起的:(哦,哇,很高兴知道不是我。我想我会坐下来等待,因为这个应用程序将在一个月左右部署,但即使它没有发布,升级对我的理智来说才是真正重要的。感谢你让我知道我不是唯一一个!使用WEBrick、瘦服务器或Mongrel都不能解决问题。我已经尝试了所有的方法。)但问题仍然存在。Shree我知道避免混血是一个推荐的修复方法,适用于我认识的几个人。你在Rails 2.3.3上吗?你确定这是同一个问题吗?