ruby-on-rails – 为什么准系统Rails控制器阻塞数据库是否关闭?
发布时间:2020-12-16 19:35:54 所属栏目:百科 来源:网络整理
导读:我有一个简单的Rails控制器,它不依赖于数据库. class PingController ActionController::Base def ping render text: 'The service is up' endend 但是,当数据库关闭时,此控制器动作阻止. 为什么会发生这种情况? 解决方法 我认为可能有三个罪魁祸首. 一个新
我有一个简单的Rails控制器,它不依赖于数据库.
class PingController < ActionController::Base def ping render text: 'The service is up' end end 但是,当数据库关闭时,此控制器动作阻止. 解决方法
我认为可能有三个罪魁祸首.
一个新的Rails应用程序有以下中间件(Source): use Rack::Sendfile use ActionDispatch::Static use Rack::Lock use #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x000000029a0838> use Rack::Runtime use Rack::MethodOverride use ActionDispatch::RequestId use Rails::Rack::Logger use ActionDispatch::ShowExceptions use ActionDispatch::DebugExceptions use ActionDispatch::RemoteIp use ActionDispatch::Reloader use ActionDispatch::Callbacks use ActiveRecord::Migration::CheckPending use ActiveRecord::ConnectionAdapters::ConnectionManagement use ActiveRecord::QueryCache use ActionDispatch::Cookies use ActionDispatch::Session::CookieStore use ActionDispatch::Flash use ActionDispatch::ParamsParser use Rack::Head use Rack::ConditionalGet use Rack::ETag run Rails.application.routes 对你的控制器的每一个要求基本上都是通过链中的每个这些中间件,一个接一个地传递出来. 其中三个与数据库相关,因此依赖于每个请求的数据库.你会注意到它们都是ActiveRecord的一部分,这是数据库涉及到的一个很大的缺点. > ActiveRecord :: Migration :: CheckPending 这将在通过请求之前检查数据库中是否有挂起的迁移.从我可以看到源代码,它检查所有环境中的待处理迁移. 除了在测试环境中,这个中间件清除每个请求的活动数据库连接.也许这个中间件中的数据库连接可能会阻止您的控制器操作. 这也可能是阻止数据库请求.对于所有环境,我可以告诉我们. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |