设置PostgreSQL和db:rake的问题



我在为我正在进行的项目设置Postresql时遇到了很多问题。


一些信息:

-我正在运行Ubuntu 12.04

-我安装了一个postgres用户帐户

-我正在尝试使用RoR中的一个项目。


我正在尝试使用以下命令:

"bundle exec rake db:create"

我试着把它用作sudo、计算机用户和postgres。

当我以计算机用户身份运行它时,它会返回"fe.sendauth:no password suppled",然后中止rake。

知道我的(用户帐户)ruby版本是2.1.0,因为当我运行"ruby--version"时,它会返回

"ruby 2.1.0p0(2013-12-25修订版44422)[x86_64-linux]"

但是,当我以postgres的形式运行"ruby--version"时,它会返回

"ruby 2.0.0p353(2013-11-22修订版43784)[x86_64-linux]"

如何为我的用户帐户和postgres分别提供ruby版本?我尝试使用sudo用RVM更改ruby版本,但被拒绝了。

我不记得为postgres sudo设置了密码,我也弄不清了。

我能对做些什么

  1. 恢复/重置我的sudo postgres密码
  2. 完成步骤1后,在postgres帐户上安装/设置最新版本(2.1.0)的ruby
  3. 运行bundle exec rake db:在所有这些之后创建

Hm,不确定linux是否有任何特定问题,但听起来你已经安装好了。

如果不查看database.yml,很难说,但rails约定似乎是使用用户名<%=连接到数据库your_project_name%>和一个空白密码。根据错误,您可能没有在postgres中创建这样的用户/角色。

# enter the psql shell as the postgres admin user
psql -d postgres
CREATE ROLE <%= your_project_name %> WITH LOGIN CREATEDB SUPERUSER;
q
# create the dbs and load the schema
bundle exec rake db:create
bundle exec rake db:schema:load
bundle exec rake db:migrate
bundle exec rake db:test:prepare
# revoke superuser, it was just there in case there were any extensions that needed installing
psql -d postgres
ALTER ROLE <%= your_project_name %> WITH NOSUPERUSER;
q

这应该能做到,尽管听起来你可能也有RVM的问题。网站上有大量关于RVM的文档。

您还可能混淆DB中用户/角色的概念与操作系统中用户的概念。您应该能够与任何unix用户一起访问数据库,但您需要使用database.yml将rails身份验证到数据库中。如上所述,我见过的大多数rails项目似乎都使用了默认值,但当然您可以使用任何您想要的。

好的,所以我修复了我的主要问题,我的ruby版本不正确,因为我没有身份验证而无法修复。

我用做的

$/bin/bash--登录

这让我输入

$rvm--默认使用2.1.0

这将我在用户postgres中的ruby版本设置为2.1.0。


但是,我尝试运行

$bundle安装

在用户postgres中,我被拒绝并给出了这个错误

不幸的是,出现了一个致命错误。请参阅Bundler疑难解答文档,网址为http://bit.ly/bundler-issues.谢谢

/home/myusername/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/fileutils.rb:250:在"mkdir"中:权限被拒绝@dir_s_mkdir-/home/myusername/.bundler(Errno::EACCES)

我无法访问用户postgres的sudo,因为我没有为它设置密码。因此,我相信我的问题的答案是运行

$sudo捆绑安装

但是我没有sudo密码。

如有任何帮助,我们将不胜感激。

相关内容