Rails/PostgreSQL新手在Rails中创建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的Railscast剧集从来没有提到过这一点,所以我不确定这是否是正确的方法(看起来有点冗长),或者我的PostgreSQL数据库安装出现了问题(因为我认为在创建应用程序时,超级用户将与数据库一起自动设置)。
此外,为了使部署更容易,我希望在开发和生产环境中保持整个database.yml
文件相同(尽管我承认对部署了解得更少,所以这可能并不理想)。
谢谢!
发布于 2012-10-28 15:18:13
创建数据库用户取决于您。Rails不创建数据库用户。
根据您的平台,您可以使用某种类型的数据库管理GUI,以便更容易地创建用户和管理他们的权限。我使用PGAdmin,这是PostgreSQL的Mac可执行文件附带的。它也适用于其他平台。
在开发中,许多人对所有项目都使用相同的“超级用户”。在生产中,我建议您让特定于应用程序的用户拥有最少的特权。
我不太明白最后一段关于database.yml
对于dev和prod是相同的,因为这正是所有环境中的一个文件。您可能不应该在开发和生产中使用相同的凭据。
https://stackoverflow.com/questions/13109997
复制相似问题