2017-03-16 55 views
1

我想禁用Rails試圖獲取到Postgres數據庫的連接,因爲我的應用程序不再需要依賴此數據庫。如何在Rails中不推薦使用SQL數據庫

我目前正在從使用Postgres轉換到使用Mongo等NoSQL數據庫。我已經遷移了大部分代碼,但爲了向後兼容,我正在爲Postgres運行一個影子寫入。

是否足以刪除ActiveRecord中間件和影子寫入代碼,以便如果Postgres失敗或連接池停滯,Rails應用程序將不會遇到超時或停機時間?

+2

擺脫所有錯誤的一種方法是殺死您的Postgres實例並觀察所有測試失敗。如果你沒有測試,這是你應該努力解決的一個大問題。 – tadman

+0

我對這些場景進行了一些測試,並且我還在中間件周圍實現了一個try catch塊,以獲取連接,以便在postgres關閉時進行處理。 什麼即時通訊有麻煩是防止問題,如完整連接池和請求停止10+秒。 – Dahnny012

+1

這種事情沒有單一的答案。這是非常情景化的。 – tadman

回答

0

要從應用程序中刪除ActiveRecord,做到以下幾點:

config/application.rb,改變這種:

require 'rails/all' 

要這樣:

require "active_model/railtie" 
require "active_job/railtie" 
require "action_controller/railtie" 
require "action_mailer/railtie" 
require "action_view/railtie" 
require "action_cable/engine" 
require "sprockets/railtie" 
require "rails/test_unit/railtie" 

environments/development.rb,刪除此行,和任何其他參考config.active_record,您可能已添加:

config.active_record.migration_error = :page_load 

environments/production.rb刪除此行,因此您可能已經添加引用config.active_record任何其他:

config.active_record.dump_schema_after_migration = false 

如果你有config/initializers/new_framework_defaults.rb文件,請從下面幾行:

Rails.application.config.active_record.belongs_to_required_by_default = true 

最後,刪除對ActiveRecord的任何引用,例如在任何模型,遷移或schema.rb(如果仍然存在)中。這可能是最好的完全覈實你的db文件夾。

注意:如果您不再使用任何ActiveModel,也可以將其從application.rb中的要求中刪除。


要刪除支持和功能連接到您的Postgres數據庫,刪除文件config/database.yml,並從您的Gemfile刪除gem 'pg'聲明(然後運行bundle install)。