2011-01-20 40 views
1

如何在連接Rails時使用tnsnames.ora中的數據庫連接信息?在database.yml中使用tnsnames.ora

我嘗試將database.yml中的database:host:字段設置爲SID,但都不起作用。

我證實sqlplus可以連接到數據庫,所以tnsnames.ora是正確的。

我在Rails 3上使用DataMapper,如果有幫助的話。

回答

1

我想我們在幾天前在#datamapper中講過。 Sqlplus是一款Oracle軟件,它與我所認爲的負載均衡系統相連接。

DataMapper假定存儲庫和數據存儲之間存在1對1映射。通常這意味着你認爲負載均衡是處理數據存儲側(比如說mysql或postgres集羣)。但是,沒有什麼能夠阻止某人編寫一個庫,讓DataMapper在一組存儲庫之間進行熱插拔,如果可以讀取與每個存儲庫相關的每個數據存儲上的負載(即寫入你自己的小負載平衡路由器)。

我工作的公司正是以這種方式使用DataMapper存儲庫(用於記錄的可分離性,而不是用於負載平衡)。

它的那樣簡單:

DataMapper.repository(seed_repository_symbol) { return your_code_block.call } 
+0

非常感謝。 :D – 2011-01-24 15:49:14

0

這種大驚小怪的幾個小時後,我發現我的答案是:

# WORKS 
development: 
    adapter: oracle 
    host: devdb 
    username: user 
    password: pwd 

我使用Rails 3.2.1,DM 1.2在Win7上安裝了32位和64位常規Oracle客戶端。

我沿途發現了一個非常重要的事情:您必須在每個database.yml模塊之間重新啓動rails dev服務器才能獲取更改。我浪費了很多時間不知道這一點。由於某些原因,DataMapper安裝程序沒有像開發服務器正常那樣在這裏進行更改。

歷史:

有人告訴我的答案是這樣的(通過誰在Windows上使用JRuby的另一家公司另一位開發人員):

# DID NOT WORK 
development: 
    adapter: oracle 
    database: user/[email protected] 

這並沒有爲我工作,我懷疑,答案是使用結腸(基於DataMapper.setup語法):

# DID NOT WORK 
development: 
    adapter: oracle 
    database: user:[email protected] 

這並沒有工作,要麼所以我測試在IRM人工連接並研究從響應DataMapper.setup。它將SID放在host中,並不表示database,所以我在database.yml中嘗試了相同的方法。有效。

+0

剛剛發現[此博客](http://blog.andrewbeacock.com/2007/06/how-to-change-your-rails-database.html),這也是相關的。 – juanitogan 2013-03-15 20:11:26

相關問題