上下文是试图在开始生产之前首先测试开发中的资产部署的试运行 取消注释以下capfile中的行
load 'deploy'
# load 'deploy/assets'
load 'config/deploy'
生成回滚,因为capistrano进程正在创建清单文件
bundle exec rake RAILS_ENV=development RAILS_GROUPS=assets assets:precompile && cp -- /Users/stageUser/v4/shared/assets/manifest.yml /Users/stageUser/v4/releases/20140623054425/assets_manifest.yml"
遇到错误
** [out :: ip] rake aborted!
** [out :: ip] FATAL: role "localhostUser" does not exist
** [out :: ip] /Users/stageUser/v4/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.18/lib/active_record/connection_adapters/postgresql_adapter.rb:1222:in `initialize'
** [out :: ip] /Users/stageUser/v4/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.18/lib/active_record/connection_adapters/postgresql_adapter.rb:1222:in `new'
** [out :: ip] /Users/stageUser/v4/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.18/lib/active_record/connection_adapters/postgresql_adapter.rb:1222:in `connect'
** [out :: ip] /Users/stageUser/v4/shared/bundle/ruby/1.9.1/
localhostUser不会在登台服务器上,deploy.rb中或Capfile中的任何位置调用。它仅定义用于localhost上的开发和测试数据库。错误显然是通过postgresql_adapter.rb
发生的更新奇怪。结束错误参考说明:
failed: "rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell '1.9.3@v4'
ruby版本1.9.3 ...对于1.9.1 ...嗯的ruby的捆绑路径。这有关系吗? 结束更新
deploy / assets调用的postgresql_adapter是什么。唯一的线索是manifests.yml文件,可以作为数据库初始化程序读取...该行确实调用了“connection_parameters”#39;但是,当stageServer不知道它时,为什么它使用localhostUser?
database.yml用户名在localhost和登台服务器之间的定义不同,但我无法理解为什么这会影响capfile。
如何确保正确设置角色?
答案 0 :(得分:0)
以下是补丁,但不是问题的正确答案。
这一切都与postgresql及其角色有关。我的database.yml文件是.gitignore(d)我有不同的用户名值(或者'角色'用于postgresql)
sudo su localhostUser
这不是postgre(使事情变得复杂,把我扔进另一个集群)
createuser stageUser
我承认我不确定这是否是解决方案的必要部分,但是WT ......安全地播放
然后,按顺序:
pg_dump app_development > mydb.sql
rake db:migrate VERSION=0
将database.yml文件中的用户名从localhostUser更改为stageUser
rake db:migrate
编辑mydb.sql,将localhostUser的字符串替换为stageUser
psql app_development < mydb.sql
部署现在运行。
这确认该任务不使用登台服务器的database.yml数据,而是使用来自localhost的一些缓存。 不是我期望的