【问题标题】:When run on Phusion passenger, Bundler cannot find the Rails directory在 Phusion 乘客上运行时,Bundler 找不到 Rails 目录
【发布时间】:2011-04-13 23:52:40
【问题描述】:

所以这是我的问题。我使用 Capistrano 将我的 Rails 3 应用程序部署到安装了 Phusion Passenger 3 的 Ubuntu 服务器上。一切都应该正常工作,但我一直收到此错误消息。

无法在 /var/www/rails/releases/20100916074325 中找到 Gemfile。 (Bundler::GemfileNotFound)

错误消息中的目录(我添加以进行澄清)确实存在于系统上,Gemfile 也存在。在错误消息下方,堆栈跟踪显示错误被抛出内部

/usr/lib/ruby/gems/1.8/gems/bundler-1.0.0/lib/bundler/shared_helpers.rb

所以我进去并添加了输出以检查该路径上的目录是否存在,并且每个目录都返回 false 一直到“www”。我不敢相信。

为什么在Passenger下运行的Bundler找不到这些路径?我能做些什么来解决它? (此时我即将放弃Passenger。)

【问题讨论】:

  • Passenger 3 处于 beta 版本 2 中,因此很明显,可能存在问题。有没有可能是路径或权限问题?
  • 我在以前的版本中遇到了同样的错误,实际上只更新到了 3,因为我认为它可能会在新版本中修复。我认为这不太可能是路径或烫发问题,因为路径似乎甚至不存在于运行 Bundler 的上下文中。 :-/

标签: ruby-on-rails ruby passenger bundler


【解决方案1】:

这几乎肯定是权限问题。也就是说,请尝试 Phusion Passenger git master;我们已经添加了积极的权限检查,所以现在它应该准确地告诉您出了什么问题以及需要修复什么,而不是像您现在看到的那样通过神秘的错误消息让事情出错。

Bundler 认为路径不存在是因为权限问题。具体来说:如果//a/a/b 没有当前进程所有者的正确可执行位,File.directory?("/a/b/c") 返回 false。

【讨论】:

  • 我尝试了“chmod -R 777 /var/www/rails”,但没有成功。我这样做对吗? (顺便感谢您的大力响应。)
  • 您还需要检查 /var/www 和 /var。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-23
  • 1970-01-01
  • 2012-05-12
  • 1970-01-01
  • 2016-11-19
  • 1970-01-01
  • 2018-10-23
相关资源
最近更新 更多