我想禁用Rails試圖獲取到Postgres數據庫的連接,因爲我的應用程序不再需要依賴此數據庫。如何在Rails中不推薦使用SQL數據庫
我目前正在從使用Postgres轉換到使用Mongo等NoSQL數據庫。我已經遷移了大部分代碼,但爲了向後兼容,我正在爲Postgres運行一個影子寫入。
是否足以刪除ActiveRecord中間件和影子寫入代碼,以便如果Postgres失敗或連接池停滯,Rails應用程序將不會遇到超時或停機時間?
我想禁用Rails試圖獲取到Postgres數據庫的連接,因爲我的應用程序不再需要依賴此數據庫。如何在Rails中不推薦使用SQL數據庫
我目前正在從使用Postgres轉換到使用Mongo等NoSQL數據庫。我已經遷移了大部分代碼,但爲了向後兼容,我正在爲Postgres運行一個影子寫入。
是否足以刪除ActiveRecord中間件和影子寫入代碼,以便如果Postgres失敗或連接池停滯,Rails應用程序將不會遇到超時或停機時間?
要從應用程序中刪除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
)。
擺脫所有錯誤的一種方法是殺死您的Postgres實例並觀察所有測試失敗。如果你沒有測試,這是你應該努力解決的一個大問題。 – tadman
我對這些場景進行了一些測試,並且我還在中間件周圍實現了一個try catch塊,以獲取連接,以便在postgres關閉時進行處理。 什麼即時通訊有麻煩是防止問題,如完整連接池和請求停止10+秒。 – Dahnny012
這種事情沒有單一的答案。這是非常情景化的。 – tadman