应用程序的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找不到该模块所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)