我在为我正在进行的项目设置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设置了密码,我也弄不清了。
我能对做些什么
- 恢复/重置我的sudo postgres密码
- 完成步骤1后,在postgres帐户上安装/设置最新版本(2.1.0)的ruby
- 运行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密码。
如有任何帮助,我们将不胜感激。