( a)我是rails初学者开发人员,我使用windows 7机器作为开发环境。
( b)使用VirtualBox,我刚刚在Windows7“主机”内安装了一个Linux服务器“来宾”,只是为了在linux机器上运行rails开发环境。
( c)为此,我配置了一个virtualbox共享文件夹:假设我在主机上拥有这个共享文件夹(窗口):
c:\rails\esamiAnatomia
并在linux嵌入式服务器上挂载:
/家庭/独身症/宿主/涅槃症
( d)在这个扩展的“开发环境”中,我希望在windows (崇高文本)上用我喜欢的可视化编辑器编辑源文件,并在linux上运行rails服务器。
这个问题涉及到database.yml配置文件:
/home/solyaris/host/esamianatomia/config/database.yml
因为在Windows上,我有一个数据库(postgresql)响应端口5433,具有特定的用户名/密码
但是在linux数据库中,响应端口5432等。
问题:
1)“架构解决方案可以吗?”(我的意思是:在windows 7主机上开发/编辑,但运行linux客户服务器的rails服务器);
2)有一种动态更改/配置database.yml的方法(我的意思是:使用两个不同的database.yml文件:一个用于linux机器,另一个用于窗口机器)?
非常感谢乔治
发布于 2013-08-19 19:11:31
您所描述的几乎是流浪汉提供的设置,所以是的,您做得很好,其他人也在做,但是他们没有自己设置它(这样可能也会得到一些非常好的插件,您应该看看Vagrant)。
关于你的第二个问题:不。不是在飞。Rails加载database.yml端,然后用它连接到数据库。当您在Rails服务器运行时更改它时,这些更改将不会被注意到。但是,您可以为两台不同的机器设置一个新的环境。然后您可以在不同的环境之间切换,并根据不同的环境访问一个或另一个数据库。
发布于 2013-10-14 18:42:38
如果你不害怕使用Rails的内脏,你就可以在技术上完成2。与任何让您访问内部rails组件的解决方案一样,这在任何时候都可能停止工作,但幸运的是,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
endhttps://stackoverflow.com/questions/18319710
复制相似问题