这里有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
更改为我的系统"超级
用户"我选择安装Homebrew(工作时); OR 现在,问题是这样的 - 我应该为我创建的每个项目创建超级用户吗?如果是这样,怎么样?我问的原因是Ryan的Railscasts剧集从未真正提到这一点,所以我不确定这是否是正确的方法(似乎有点啰嗦),或者如果有的话我的PostgreSQL数据库安装问题(因为我认为在创建应用程序时,超级用户将与数据库一起自动设置)。
此外,为了使部署更容易,我希望在开发和生产环境中保持整体database.yml
文件相同(尽管我承认对部署知之甚少,所以也许这不是理想的。)
谢谢!
答案 0 :(得分:1)
创建数据库用户取决于您。 Rails不会创建数据库用户。
根据您的平台,您可以使用某种数据库管理GUI来更轻松地创建用户和管理他们的权限。我使用PGAdmin,它附带了PostgreSQL的Mac OS X可执行文件。它也适用于其他平台。
在开发过程中,许多人对所有项目使用相同的“超级用户”。在制作中,我建议你让特定于应用程序的用户享有最小的权限。
我并不完全理解关于database.yml
与dev和prod envs相同的最后一段,因为这正是所有环境的一个文件。您可能不应该使用相同的凭据进行开发和生产。