Rails/PostgreSQL新手在這裏遇到了實際的問題,在Rails中創建PostgreSQL項目。Rake在postgresql遷移期間中止
簡而言之,我遵循Ryans優秀的Railscast情節,特別是關於部署的情節。我創建了一個新的項目是這樣的:
rails new blog -d postgresql
這生成一個database.yml
文件類似於以下(提取評論):
development:
adapter: postgresql
encoding: unicode
database: blog_development
pool: 5
username: blog
password:
test:
adapter: postgresql
encoding: unicode
database: blog_test
pool: 5
username: blog
password:
production:
adapter: postgresql
encoding: unicode
database: blog_production
pool: 5
username: blog
password:
看起來好爲止。
但是,我的機器上,每當我嘗試運行rake db:create:all
,我得到一個消息類似以下內容:
rake aborted!
FATAL: role "blog" does not exist
我的理解是,這是因爲我還沒有(或者說, Rails在創建應用程序時沒有創建一個名爲「blog」的用戶。因此,我需要:
- 更改
username
適用於所有環境到我的系統的「超級 用戶」我當我安裝自制軟件(工作)選擇;或 - 爲我設置的每個單獨項目創建一個新的超級用戶(例如,在本例中爲 超級用戶「博客」)。
現在,問題是這樣的 - 我應該爲每個創建的項目創建一個超級用戶嗎?如果是這樣,怎麼樣?我問的原因是Ryan的Railscasts事件從來沒有提到這一點,所以我不確定這是否是正確的方法(看起來有點冗長),或者如果我的PostgreSQL數據庫安裝有問題(因爲我認爲在創建應用程序時超級用戶會自動與數據庫一起設置)。
此外,爲了使部署更容易,我希望在開發和生產環境中保持整個database.yml
文件相同(儘管我承認對部署知之甚少,所以也許這不是很理想)。
謝謝!
謝謝Jesper。我傾向於在開發模式下使用我的「本地」用戶名來開發和測試環境。我打算在服務器數據庫上設置一個單獨的生產用戶,但是當我運行db:migrate local時,它不會在本地機器上找到用戶,因此它會拋出錯誤消息(我認爲)。我是否應該在本地設置一個「生產」超級用戶,並使用與服務器上的超級用戶相同的憑據? – Graeme
關於超級用戶:在您的本地機器上,爲了簡化和加速開發,您可以使用超級用戶帳戶作爲您的數據庫角色。在製作時,建議您不要使用超級用戶帳戶作爲Rails用來訪問數據庫的帳戶。因此,某種程度上,超級用戶超出了本次討論的Rails範圍。看起來很清楚,接下來你需要做的是閱讀PG中的用戶/角色,然後在本地機器上創建適當的角色。 – Jesper
謝謝,好點。 – Graeme