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

时间:2011-09-30 15:42:38

标签: ruby-on-rails ruby

我正在使用rails 2.3.4和ruby 1.8.7。 在我的应用程序中,当我尝试通过移动Api购买商品(这是金属请求)时,购买成功,现在当我转到网络界面并对商品进行任何更改,如购买限制或商品的价格,然后尝试通过移动api再次购买,它会抛出错误

A copy of ApplicationHelper has been removed from the module tree but is still active!

[RAILS_ROOT]/vendor/rails/activesupport/lib/active_support/dependencies.rb:414:in `load_missing_constant'

[RAILS_ROOT]/vendor/rails/activesupport/lib/active_support/dependencies.rb:80:in `const_missing_not_from_s3_library'

/home/user/.rvm/gems/ruby-1.8.7-p334/gems/aws-s3-0.6.2/lib/aws/s3/extensions.rb:206:in `const_missing'

[RAILS_ROOT]/app/helpers/web_application_helper.rb:414:in `purchases_left'

[RAILS_ROOT]/app/helpers/web_application_helper.rb:83:in `accept_purchase_direct'

[RAILS_ROOT]/lib/api/publisher/v1_purchases_helper.rb:49:in `purchases_handler'

[RAILS_ROOT]/app/metal/v1_purchases_controller.rb:54:in `call'

[RAILS_ROOT]/vendor/rails/railties/lib/rails/rack/metal.rb:44:in `call'

[RAILS_ROOT]/vendor/rails/railties/lib/rails/rack/metal.rb:43:in `each'

[RAILS_ROOT]/vendor/rails/railties/lib/rails/rack/metal.rb:43:in `call'

[RAILS_ROOT]/vendor/rails/actionpack/lib/action_controller/session/abstract_store.rb:122:in `call'.

我在网上环顾四周,因为没有人遇到同样的问题,但无法找到相同的修复程序。现在当服务器重新启动并且我试图购买时,它是成功的。我无法弄清楚原因,但仍然想提出我的想法,如果在我们连接到数据库的每个操作后,由于从数据库查询的行引发错误,它是否可以修复:

def purchases_left 
  accepted = AcceptedOffer.find_all_by_offer_id_and_user_id(offer.id, current_user.id)
end

我已经打印了商品的价值并且正确无误。我想不出要提供更多的代码。欢迎任何疑问。

1 个答案:

答案 0 :(得分:1)

在开发模式下出现错误,因为缓存设置为false,因此在开发模式下将缓存设置为true之后,将不会发生错误,但会发生查询缓存,因此您需要对其进行操作。此外,我在调用下一个操作后未加载类的金属请求。 在生产的情况下,发生查询缓存,而在此模式下不出现错误,但结果不如预期,因为未反映数据库中的更改。 所以在这两种情况下,有效的解决方案都是绕过查询缓存。