我在为正在处理的项目设置Postresql时遇到了很多问题。
一些信息:
- 我正在运行Ubuntu 12.04
- 我安装了一个postgres用户帐户
- 我正在尝试在RoR中使用一个项目。
我正在尝试使用此命令:
“捆绑exec rake db:create”
我尝试将它用作sudo,计算机用户和postgres。
当我以计算机用户身份运行它时,它返回“fe_sendauth:no password supplied”,然后中止rake。
我知道我的(用户帐户) ruby版本 2.1.0 ,因为当我运行“ruby --version”时,它返回
“ruby 2.1.0p0(2013-12-25修订版44422)[x86_64-linux]”
然而,当我将“ruby --version”作为 postgres 运行时,它会返回
“ruby 2.0.0p353(2013-11-22修订版43784)[x86_64-linux]”
如何为我的用户帐户和postgres提供单独的ruby版本?我尝试使用sudo用RVM更改ruby版本,但我被拒绝了。
我不记得为postgres sudo设置密码了,我无法理解。
我该怎么办
答案 0 :(得分:0)
嗯,不确定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的文档。
您也可能会将数据库中用户/角色的概念与操作系统中用户的概念混淆。您应该能够使用任何unix用户访问数据库,但是您需要使用database.yml对数据库中的rails进行身份验证。如上所述,大多数铁轨项目似乎都有默认值,但我们当然可以使用你想要的任何东西。
答案 1 :(得分:0)
好的,所以我修复了我的主要问题,我的ruby版本不正确,无法解决,因为我没有身份验证。
我用
做了这个$ / bin / bash --login
这让我输入
$ rvm --default使用2.1.0
这将用户postgres中的ruby版本设置为2.1.0。
然而,然后我尝试运行
$ bundle install
用户postgres中的,我被拒绝并发出此错误
不幸的是,发生了致命错误。请参阅Bundler故障排除文档 http://bit.ly/bundler-issues。谢谢!
/home/myusername/.rvm/rubies/ruby-2.1.0/lib/ruby/2.1.0/fileutils.rb:250:in,mkdir' ;:权限被拒绝@ dir_s_mkdir - / home / myusername / .bundler(Errno :: EACCES)
我无法访问用户postgres的sudo,因为我没有为它设置密码。因此,我相信我的问题的答案是运行
$ sudo bundle install
但我没有sudo密码。
对此问题的任何帮助都将不胜感激。