ruby-on-rails – 如果config.cache_classes = true,Rails找不到该模块

ruby-on-rails – 如果config.cache_classes = true,Rails找不到该模块,第1张

概述我有一个宝石,通过routes.rb&的Gemfile.以下是重要的部分: 应用程序的Gemfile source 'https://rubygems.org'gem 'rails', '3.2.9'gem 'mysql2'group :assets do gem 'sass-rails' gem 'coffee-rails'endgem 'jquery-rails'ge 我有一个宝石,通过routes.rb&的Gemfile.以下是重要的部分:

应用程序的Gemfile

source 'https://rubygems.org'gem 'rails','3.2.9'gem 'MysqL2'group :assets do  gem 'sass-rails'  gem 'coffee-rails'endgem 'jquery-rails'gem "common_clIEnt",path: "../common-clIEnt"

App的routes.rb

mount CommonClIEnt::Engine => "",:as => 'shared'

gem的路线.rb

get '/register' => 'session#new_registration'

gems的SessionController

require 'common_clIEnt/session_controller_base'class SessionController < ApplicationController  include CommonClIEnt::SessionControllerBaseend

gems的SessionControllerBase

module CommonClIEnt  module SessionControllerBase  def new_registration      #some code goes here  endend

这在开发和工作中都很好用. rails能够找到CommonClIEnt :: SessionController&每当访问者点击/注册路由时执行new_registration *** 作.但在生产中,rails无法找到CommonClIEnt :: SessionController&生成以下错误:

$RAILS_ENV=production rails s=> Booting WEBrick=> Rails 3.2.9 application starting in production on http://0.0.0.0:3000=> Call with -d to detach=> Ctrl-C to shutdown server[2012-12-09 03:27:29] INFO  WEBrick 1.3.1[2012-12-09 03:27:29] INFO  ruby 1.9.3 (2012-10-12) [x86_64-linux][2012-12-09 03:27:29] INFO  WEBrick::httpServer#start: pID=4248 port=3000Started GET "/" for 127.0.0.1 at 2012-12-09 03:28:17 +0530Processing by WelcomeController#index as HTMLRedirected to localhost:3000/registerFilter chain halted as :check_credentials rendered or redirectedCompleted 302 Found in 267ms (ActiveRecord: 0.0ms)Started GET "/register" for 127.0.0.1 at 2012-12-09 03:28:18 +0530ActionController::RoutingError (uninitialized constant CommonClIEnt::SessionController):  vendor/bundles/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/inflector/methods.rb:230:in `block in constantize'  vendor/bundles/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/inflector/methods.rb:229:in `each'  vendor/bundles/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/inflector/methods.rb:229:in `constantize'  vendor/bundles/ruby/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/routing/route_set.rb:69:in `controller_reference'  vendor/bundles/ruby/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/routing/route_set.rb:54:in `controller'  vendor/bundles/ruby/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/routing/route_set.rb:32:in `call'  vendor/bundles/ruby/1.9.1/gems/journey-1.0.4/lib/journey/router.rb:68:in `block in call'  vendor/bundles/ruby/1.9.1/gems/journey-1.0.4/lib/journey/router.rb:56:in `each'  vendor/bundles/ruby/1.9.1/gems/journey-1.0.4/lib/journey/router.rb:56:in `call'  vendor/bundles/ruby/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/routing/route_set.rb:601:in `call'  vendor/bundles/ruby/1.9.1/gems/railtIEs-3.2.9/lib/rails/engine.rb:479:in `call'  vendor/bundles/ruby/1.9.1/gems/railtIEs-3.2.9/lib/rails/railtIE/configurable.rb:30:in `method_missing'  vendor/bundles/ruby/1.9.1/gems/journey-1.0.4/lib/journey/router.rb:68:in `block in call'  vendor/bundles/ruby/1.9.1/gems/journey-1.0.4/lib/journey/router.rb:56:in `each'  vendor/bundles/ruby/1.9.1/gems/journey-1.0.4/lib/journey/router.rb:56:in `call'  vendor/bundles/ruby/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/routing/route_set.rb:601:in `call'  vendor/bundles/ruby/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/mIDdleware/best_standards_support.rb:17:in `call'  vendor/bundles/ruby/1.9.1/gems/rack-1.4.1/lib/rack/etag.rb:23:in `call'  vendor/bundles/ruby/1.9.1/gems/rack-1.4.1/lib/rack/conditionalget.rb:25:in `call'  vendor/bundles/ruby/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/mIDdleware/head.rb:14:in `call'  vendor/bundles/ruby/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/mIDdleware/params_parser.rb:21:in `call'  vendor/bundles/ruby/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/mIDdleware/flash.rb:242:in `call'  vendor/bundles/ruby/1.9.1/gems/rack-1.4.1/lib/rack/session/abstract/ID.rb:205:in `context'  vendor/bundles/ruby/1.9.1/gems/rack-1.4.1/lib/rack/session/abstract/ID.rb:200:in `call'  vendor/bundles/ruby/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/mIDdleware/cookies.rb:341:in `call'  vendor/bundles/ruby/1.9.1/gems/activerecord-3.2.9/lib/active_record/query_cache.rb:64:in `call'  vendor/bundles/ruby/1.9.1/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract/connection_pool.rb:479:in `call'  vendor/bundles/ruby/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/mIDdleware/callbacks.rb:28:in `block in call'  vendor/bundles/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/callbacks.rb:405:in `_run__4296103602150594596__call__1936882885794917979__callbacks'  vendor/bundles/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/callbacks.rb:405:in `__run_callback'  vendor/bundles/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/callbacks.rb:385:in `_run_call_callbacks'  vendor/bundles/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/callbacks.rb:81:in `run_callbacks'  vendor/bundles/ruby/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/mIDdleware/callbacks.rb:27:in `call'  vendor/bundles/ruby/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/mIDdleware/remote_ip.rb:31:in `call'  vendor/bundles/ruby/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/mIDdleware/deBUG_exceptions.rb:16:in `call'  vendor/bundles/ruby/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/mIDdleware/show_exceptions.rb:56:in `call'  vendor/bundles/ruby/1.9.1/gems/railtIEs-3.2.9/lib/rails/rack/logger.rb:32:in `call_app'  vendor/bundles/ruby/1.9.1/gems/railtIEs-3.2.9/lib/rails/rack/logger.rb:16:in `block in call'  vendor/bundles/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/tagged_logging.rb:22:in `tagged'  vendor/bundles/ruby/1.9.1/gems/railtIEs-3.2.9/lib/rails/rack/logger.rb:16:in `call'  vendor/bundles/ruby/1.9.1/gems/actionpack-3.2.9/lib/action_dispatch/mIDdleware/request_ID.rb:22:in `call'  vendor/bundles/ruby/1.9.1/gems/rack-1.4.1/lib/rack/methodoverrIDe.rb:21:in `call'  vendor/bundles/ruby/1.9.1/gems/rack-1.4.1/lib/rack/runtime.rb:17:in `call'  vendor/bundles/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/cache/strategy/local_cache.rb:72:in `call'  vendor/bundles/ruby/1.9.1/gems/rack-1.4.1/lib/rack/lock.rb:15:in `call'  vendor/bundles/ruby/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:136:in `forward'  vendor/bundles/ruby/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:245:in `fetch'  vendor/bundles/ruby/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:185:in `lookup'  vendor/bundles/ruby/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:66:in `call!'  vendor/bundles/ruby/1.9.1/gems/rack-cache-1.2/lib/rack/cache/context.rb:51:in `call'  vendor/bundles/ruby/1.9.1/gems/railtIEs-3.2.9/lib/rails/engine.rb:479:in `call'  vendor/bundles/ruby/1.9.1/gems/railtIEs-3.2.9/lib/rails/application.rb:223:in `call'  vendor/bundles/ruby/1.9.1/gems/rack-1.4.1/lib/rack/content_length.rb:14:in `call'  vendor/bundles/ruby/1.9.1/gems/railtIEs-3.2.9/lib/rails/rack/log_tailer.rb:17:in `call'  vendor/bundles/ruby/1.9.1/gems/rack-1.4.1/lib/rack/handler/webrick.rb:59:in `service'  /home/gaurish/.rvm/rubIEs/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'  /home/gaurish/.rvm/rubIEs/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'  /home/gaurish/.rvm/rubIEs/ruby-1.9.3-p286-perf/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'^C[2012-12-09 03:42:57] INFO  going to shutdown ...[2012-12-09 03:42:57] INFO  WEBrick::httpServer#start done.Exiting

现在,
这是有趣的部分.这些错误在生产中消失了.当我在production.rb中禁用代码缓存时,app工作得很好.通过设置

config.cache_classes = false

这一切让我想知道,

>为什么rails可以在开发环境中使用CommonClIEnt :: SessionController而不能在生产环境中使用?
>如何设置config.cache_classes = false使其在生产中工作? rails可以找到它之前无法做到的CommonClIEnt :: SessionController
>我需要做的是让rails找到CommonClIEnt :: SessionController而不是丑陋的黑客攻击禁用代码缓存&在每个请求上重新加载所有代码?

最后,我尽力解释,但仍然有些不清楚,或者需要更多信息.请发表评论.谢谢

解决方法 尝试更新routes.rb,如:

require 'common_clIEnt'mount CommonClIEnt::Engine => '/shared'
总结

以上是内存溢出为你收集整理的ruby-on-rails – 如果config.cache_classes = true,Rails找不到该模块全部内容,希望文章能够帮你解决ruby-on-rails – 如果config.cache_classes = true,Rails找不到该模块所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1275172.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存