日期:2014-05-16  浏览次数:20456 次

动态数据库配置

Rails数据库配置文件config/database.yml是个YAML文件。但是它在成为YAML解析器之前,它要使用Erb进行预处理操作。这意味着你可以植入Ruby代码到这类文件中,就像你的视图模板那样,给了你一种足够强大的语言。

?

假如你一起与三个开发团队工作。你们在苹果机上工作,因此你们的配置基本上是相同的。但有时候你们发现自己在Linux环境上进行开发,并且你们的配置有变化。这很讨厌,因为你们的database.yml文件都需要指向不同的MySQL socket文件。如果你们中的某个人在一个地方进行了修改,那么下个要更新的人就会遇到错误信息。

?

所以现在我们在database.yml文件内使用Erb来寻找存储在各种计算机上存储在任何地方的MySQL socket文件,然后选择正确的一个。

?

development:
  adapter: mysql
  encoding: utf8
  database: test
  pool: 5
  username: root
  password: root
  socket: <%= ["/tmp/mysqld.sock",
              "/tmp/mysql.sock",
              "/var/run/mysqld/mysqld.sock",
              "/var/lib/mysql/mysql.sock"].detect{|socket|
              File.exist?(socket)
          } %>