在postgresql迁移期间,Rake中止了

时间:2012-10-28 15:08:31

标签: ruby-on-rails postgresql rake

这里有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"什么时候创建应用程序。因此,我需要:

  1. 将所有环境的username更改为我的系统"超级 用户"我选择安装Homebrew(工作时); OR
  2. 为我设置的每个项目创建一个新的超级用户(例如a 超级用户"博客"在这个例子中)。
  3. 现在,问题是这样的 - 我应该为我创建的每个项目创建超级用户吗?如果是这样,怎么样?我问的原因是Ryan的Railscasts剧集从未真正提到这一点,所以我不确定这是否是正确的方法(似乎有点啰嗦),或者如果有的话我的PostgreSQL数据库安装问题(因为我认为在创建应用程序时,超级用户将与数据库一起自动设置)。

    此外,为了使部署更容易,我希望在开发和生产环境中保持整体database.yml文件相同(尽管我承认对部署知之甚少,所以也许这不是理想的。)

    谢谢!

1 个答案:

答案 0 :(得分:1)

创建数据库用户取决于您。 Rails不会创建数据库用户。

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

在开发过程中,许多人对所有项目使用相同的“超级用户”。在制作中,我建议你让特定于应用程序的用户享有最小的权限。

我并不完全理解关于database.yml与dev和prod envs相同的最后一段,因为这正是所有环境的一个文件。您可能不应该使用相同的凭据进行开发和生产。