Rails Capistrano 共享文件问题

hiveer · 2014年05月28日 · 最后由 hiveer 回复于 2014年05月30日 · 2179 次阅读

情况是这样的,rails 下的/bin 目录一直是在版本控制器里面的,同时也是在 capistrano 的 linked_dirs 中。 现在我遇到了一个问题就是,当我将 delayed_job 集成到 rails 中来的时候,在/bin 里面就新增了一个文件叫做 delayed_job。此时我正常的进行发布操作,但是发布过程中就报错了,提示/bin/delayed_job 找不到。也就是说这个文件没有被 copy 到服务器,我大胆的推测是因为 capistrano 根本就没有对这个文件进行 copy 操作,仅仅是直接用的 shared/bin 里面的文件。不到值各位对此有何见解?

对的,他是直接用的 share 目录下面的,而不是拷贝文件… 之前部署的时候发现这个了,嘿嘿… 好像要把文件手工拷贝才可以的样子 因为一般 link_dirs 里面的文件不在版本控制里而且不会经常变更才放在这里的吧… 我的个人见解,我什么不对的欢迎楼下指正

刚又仔细想了下,因为 capistrano 会在部署的时候映射你说的这个文件,而这个文件没有在 share 目录中,所以导致报错 个人觉得有两种方法解决,一种是把文件拷贝到 share 目录,另一个就是在 capistrano 中不把这个文件加入 link_dirs 因为文件本来就在版本控制里,所以部署的时候这个文件会在服务器上拉取到。

@hging 指正一点点,报错是因为我在 task 里面去调用了这个命令,用来启动 delayed_job 的 worker。打算明天按照你的解决办法来试试,谢谢啦!

#2 楼 @hiveer 希望能帮到,嘿嘿,我也是最近摸索这个来着

试试使用 gem 'capistrano-bundler' 和 rbenv

猜测正确 问题已解决

需要 登录 后方可回复, 如果你还没有账号请 注册新账号