0

一)我在軌初學者開發商紅寶石,而我使用的Windows 7機器的研究與開發環境...運行軌道:一個database.yml的問題

b)在VirtualBox的我剛裝,在Windows 7的「主機」內部,一個Linux ubuntu服務器「guest」,只是在linux機器上運行rails開發環境。

c)中爲了做到這一點我配置了一個的virtualbox共享文件夾: 設說我有在主機上該共享文件夾(窗口):

C:\導軌\ esamiAnatomia

和它安裝到Linux的嵌入式服務器:

/家庭/ solyaris /主機/ esamianatomia

d)在本exptended「的研究與開發環境」我想編輯在Windows上我的首選可視化編輯器源文件(TEX昇華t)和在Linux上運行rails服務器。

問題的關注database.yml的配置文件:

/home/solyaris/host/esamianatomia/config/database.yml

,因爲在Windows上我有一個數據庫(PostgreSQL的)響應5433,與特定的用戶名/密碼

,但在Linux數據庫端口5432響應等

問題:

1)這是「arcgitectural解決方案好嗎? (我的意思是:從Windows 7主機開發/編輯,但運行Linux客戶服務器的rails服務器);

2)有一種方法來更改/配置database.yml(我的意思是:使用兩個不同的database.yml文件:一個用於Linux機器,另一個用於窗口機器)?

非常感謝 喬治

回答

0

你所描述是相當多的設置是Vagrant被提供,所以是的,你做得很好,其他人也這樣做,但他們並沒有設置它自己(也可能會得到一些非常好的插件,你應該看看Vagrant)。

對於你的第二個問題:沒有。不在飛行中。 Rails加載database.yml結束,然後用它連接到數據庫。當您在Rails服務器運行時更​​改它時,更改將不會被注意到。但是你可以做的是爲你的兩臺不同的機器設置一個新的環境。然後,您可以在不同的環境之間切換,並根據環境,訪問其中一個或另一個數據庫。

+0

感謝克里斯託弗,我看看流浪。 –

0

如果你不怕周圍的Rails的膽量,你可以在技術上完成2。與任何訪問內部導軌組件的解決方案一樣,這可能會在任何時候停止工作,但幸運的是,這部分API不太可能經常更改,如果有的話。不過,使用這個需要您自擔風險。

下面是我如何在我的項目上做到這一點。首先修改應用程序如下:

# config/application.rb: 

# After require 'rails/all' 
require_relative 'db_override' 

然後創建新文件:

# config/db_override.rb: 
case Socket.gethostname 
when 'host1' 
    $db_config = 'config/host1_database.yml' 
when 'host2' 
    $db_config = 'config/host2_database.yml' 
else 
    $db_config = nil # Use the default config/database.yml 
end 

if $db_config 
    class DBConfigSelect < Rails::Railtie 
    initializer "db_config_select", before: "active_record.initialize_database" do 
     puts "Using custom DB configuration: #{$db_config}" 

     # Get the existing path configuration 
     cur_paths = Rails.application.config.paths['config/database'].instance_variable_get :@paths 

     # Override the default config sources 
     cur_paths.shift 
     cur_paths.push $db_config 
    end 
    end 
end