在开发,测试和生产中使用不同套接字的Rails database.yml配置

时间:2012-04-04 00:07:24

标签: ruby-on-rails passenger

所以我使用Rails 3.2和mysql在本地开发。我的本地机器是Mac,我的database.yml用于开发:

development:
    adapter: mysql2
    database: dbname
    encoding: utf8
    host: localhost 
    port: 3306
    timeout: 5000
    socket: /tmp/mysql.sock

为了测试它是

test:
    adapter: mysql2
    database: dbname
    encoding: utf8
    host: localhost 
    port: 3306
    timeout: 5000
    socket: /var/lib/mysql/mysql.sock

测试和生产服务器在CentOS上,并且套接字在部署到它们时可以正常工作。但是我只是去做一个手动耙子并得到了

  

无法通过套接字'/tmp/mysql.sock'连接到本地MySQL服务器(2)

我的网站有效,但我很好奇我是不是应该单独处理database.yml进行部署,因为当我运行rake时它会以某种方式查看开发?

寻找建议并没有看到同样的问题,如果我错过了,请提前道歉。

2 个答案:

答案 0 :(得分:2)

您可以在运行Rake任务时指定Rails环境。

rake db:migrate RAILS_ENV=production

答案 1 :(得分:0)

我可以想到三种选择:

  • 更改您的database.yml,而不是更改中的版本
  • 使用capistrano及其shared文件夹来处理不同的database.yml
  • 使用环境变量,即ENV['TEST_SOCKET']