我正在努力让Capistrano在我的MacBook(OSX Mountain Lion)上工作,但我遇到了很多困难。它开始时抛出一个错误:
cillosis:myapp macbook$ cap deploy
/Library/Ruby/Gems/1.8/gems/sshkit-1.2.0/lib/sshkit.rb:32: undefined method `require_relative' for main:Object (NoMethodError)
from /Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:55:in `gem_original_require'
from /Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Library/Ruby/Gems/1.8/gems/capistrano-3.0.1/lib/capistrano/all.rb:2
from /Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:55:in `gem_original_require'
from /Library/Ruby/Site/1.8/rubygems/core_ext/kernel_require.rb:55:in `require'
from /Library/Ruby/Gems/1.8/gems/capistrano-3.0.1/bin/cap:2
from /usr/bin/cap:19:in `load'
from /usr/bin/cap:19
似乎我安装了Ruby 1.8并且它与Capistrano无法正常工作(发现这个谷歌搜索)。
所以我使用rvm安装了Ruby 2.0。 RVM开始抛出一堆错误,所以我使用rvm implode
摆脱它,发现2.0版本仍在我的计算机上。我检查了 $ PATH ,它指向的位置包含Ruby 1.8。所以我将其重命名为* ruby_old *并将新的ruby复制到该文件夹( / usr / bin )。然后,当我做了ruby -v
时,它又以版本2.0的形式返回。所以我想,很好,现在我们终于可以运行Capistrano了。
为了确定,我做了一个gem update
,因为更新了以前抛出错误的 sshkit gem。所以我去部署,并得到与我开始时相同的错误。
我知道 deploy.rb 脚本是正确的,因为我一直在另一台Mac上使用它。
TL; DR;在一些摸索之后,当我输入ruby -v
时,它会返回使用版本2.0,但当我使用Capistrano执行cap deploy
时,它会尝试使用版本1.8的ruby。我该如何解决这个问题?
答案 0 :(得分:1)
愚蠢但简单的方法是彻底删除RVM和两个ruby版本,然后从头开始重新安装。由于某些宝石尚未达到速度,我建议1.9.x超过2.0,但这取决于你。
另一种选择是在gemfile中指定ruby版本(如heroku所做的那样),然后执行“bundle exec cap deploy”。再一次,没有保证 - 但它可能会迫使capistrano按照你想要的方式行事,直到找到合适的解决方案。