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