2012-04-04 43 views
0

所以我在本地使用Rails 3.2和mysql進行開發。我的本地機器是一臺Mac,我的發展database.yml的是:在開發,測試和生產上使用不同套接字的Rails 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」(2)

我的地盤工程,連接到本地MySQL服務器,但我很好奇,如果我應該單獨處理database.yml進行部署,因爲它在運行rake時會以某種方式查看開發情況?

找了一個建議,沒有看到同樣的問題,如果我錯過了,請提前道歉。

回答

2

您可以在運行Rake任務時指定Rails環境。

rake db:migrate RAILS_ENV=production 
+0

感謝鮑勃。我試過了,它確實爲耙子工作。 – creativereason 2012-04-04 17:52:23

+0

非常好!既然你是Stack Overflow的新手,我會指出你可以隨意接受這個作爲你的問題的答案,以幫助你和我的聲譽。最好的祝福。 – 2012-04-05 17:50:51

0

我能想到的三種選擇:

  • 更改您的database.yml,只是沒有版本的變化
  • Capistrano的用途和它的shared文件夾來處理不同的database.yml
  • 使用環境變量即ENV['TEST_SOCKET']
+0

感謝您的回答佩德羅。環境變量聽起來像它可以工作。這是你可以綁定到capistrano部署的東西嗎? – creativereason 2012-04-04 15:46:59

+0

你可以放入你的和你的測試服務器的'.profile','.bashrc','.zshrc'或任何你用於你的shell的東西。 – 2012-04-04 17:07:30

相關問題