1

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”的用户。因此,我需要:

  1. 将所有环境更改username为我在安装 Homebrew 时选择的系统的“超级用户”(有效);或者
  2. 为我设置的每个单独项目创建一个新的超级用户(例如,在本例中为超级用户“博客”)。

现在,问题是——我应该为我创建的每个单独项目创建一个超级用户吗?如果是这样,怎么做?我问的原因是 Ryan 的 Railscasts 剧集从未真正提到这一点,所以我不确定这是否是正确的方法(似乎有点冗长),或者我的 PostgreSQL 数据库安装是否有问题(我原以为超级用户会在创建应用程序时与数据库一起自动设置)。

此外,为了使部署更容易,我希望database.yml在开发和生产环境中保持整个文件相同(尽管我承认对部署了解更少,所以这可能并不理想)。

谢谢!

4

1 回答 1

1

创建数据库用户由您决定。Rails 不创建数据库用户。

根据您的平台,您可以使用某种数据库管理 GUI 来更轻松地创建用户和管理他们的权限。我使用 PGAdmin,它附带了用于 PostgreSQL 的 Mac OS X 可执行文件。它也可用于其他平台。

在开发中,许多人对所有项目使用相同的“超级用户”。在生产中,我建议您让特定于应用程序的用户具有最低权限。

我不完全理解关于database.ymldev 和 prod envs 的最后一段,因为这正是重点 - 所有环境的一个文件。您可能不应该将相同的凭据用于开发和生产。

于 2012-10-28T15:18:13.427 回答