Rails/PostgreSQL 新手在这里,在处理在 Rails 中创建 PostgreSQL 项目时遇到了真正的问题。
简而言之,我正在关注 Ryan 的优秀 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 时选择的系统的“超级用户”(有效);或者 - 为我设置的每个单独项目创建一个新的超级用户(例如,在本例中为超级用户“博客”)。
现在,问题是——我应该为我创建的每个单独项目创建一个超级用户吗?如果是这样,怎么做?我问的原因是 Ryan 的 Railscasts 剧集从未真正提到这一点,所以我不确定这是否是正确的方法(似乎有点冗长),或者我的 PostgreSQL 数据库安装是否有问题(我原以为超级用户会在创建应用程序时与数据库一起自动设置)。
此外,为了使部署更容易,我希望database.yml
在开发和生产环境中保持整个文件相同(尽管我承认对部署了解更少,所以这可能并不理想)。
谢谢!