2016-10-04 78 views
1

我有一個數據庫託管在開發環境和生產環境中。我正在寫一個基於請求中的參數的api將在環境或生產數據庫中寫入表中。運行時連接到兩個不同的ruby數據庫

發展:
適配器:mysql2
數據庫:DB1
用戶名:root
密碼:
超時:5000
主持人:ABCD
我已經database.yaml文件放在這兩個項目在 pool:5
port:1234

生產: 適配器:mysql2 數據庫:DB1 用戶名:root
密碼:
超時:5000
主持人:ABCE
池:5
端口:1234

這是我的活動記錄:

class table1 < ActiveRecord::Base 
self.table_name = 'table1' 
end 

如何根據請求參數寫入不同的環境?

+0

你有在每個環境中運行的應用程序嗎?爲什麼不寫你的API發佈到不同的應用程序取決於所述參數? –

+0

編號應用程序僅在一個環境中運行。我想先推向開發環境並進行測試。然後將其稱爲生產數據庫。 – NooB8374

+1

你沒有。在導軌服務器啓動時,通常會讀取導軌中的配置。雖然可以有[多個數據庫連接](http:// stackoverflow。com/questions/6122508/connecting-rails-3-1-with-multiple-databases) - 你最可能想要的是一個臨時環境(鏡像生產環境),這通常是通過創建一個單獨的rails應用程序並通過使用'ENV [ 'DATABASE_URL']'。 – max

回答

1

您可以對同一個表使用兩個模型,一個連接到生產數據庫,另一個連接到開發數據庫。

假設您的連接參數在變量$production$developent中。

您還需要修改代碼以知道使用哪個模型。

class table1 < ActiveRecord::Base 
establish_connection($production) 
self.table_name = 'table1' 
end 

class table1test < ActiveRecord::Base 
establish_connection($developent) 
self.table_name = 'table1' 
end 
+0

謝謝,這個工程。 – NooB8374

3

去這個吧。 [ActiveRecord Firebird Adapter] [1]

[1]:https://github.com/rowland/activerecord-fb-adapter我用它來連接我的本地Rails應用程序與其他生產服務器數據庫,不要忘記添加模型,以幫助您通過Rails應用程序訪問數據庫。好運,希望它有幫助。