Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用旧Ruby版本的Capistrano_Ruby_Macos_Capistrano - Fatal编程技术网

使用旧Ruby版本的Capistrano

使用旧Ruby版本的Capistrano,ruby,macos,capistrano,Ruby,Macos,Capistrano,我正试图让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/S

我正试图让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 infrade
摆脱了它,并发现2.0版本仍然在我的计算机上。我检查了我的$PATH,它指向的位置包含Ruby 1.8。因此我将其重命名为*ruby_old*,并将新的ruby复制到该文件夹(/usr/bin)。然后,当我做了一个
ruby-v
时,它的版本是2.0。所以我想,太好了,现在我们终于可以运行Capistrano了

为了确保这一点,我做了一次
gem更新
,结果是更新了之前抛出错误的sshkitgem。因此,我开始部署,并得到与开始时相同的错误

我知道部署.rb脚本是正确的,因为我一直在另一台Mac上使用它


TL;博士经过一番摸索,当我键入
ruby-v
时,它返回到使用版本2.0,但当我使用Capistrano执行
capdeploy
时,它尝试使用版本1.8的ruby。如何解决这个问题?

一个愚蠢但简单的解决方法是完全删除RVM和两个ruby版本,然后重新安装。我会推荐1.9.x而不是2.0,因为有些宝石还没有达到最新的速度,但这取决于你


另一个选项是在gemfile中指定ruby版本(就像heroku那样),然后执行“bundle exec cap deploy”。同样,没有保证-但这可能会迫使capistrano按照您想要的方式运行,直到找到合适的解决方案。

愚蠢但简单的解决方法是完全删除RVM和两个ruby版本,然后重新安装。我会推荐1.9.x而不是2.0,因为有些宝石还没有达到最新的速度,但这取决于你


另一个选项是在gemfile中指定ruby版本(就像heroku那样),然后执行“bundle exec cap deploy”。同样,没有保证——但这可能会迫使capistrano按照你想要的方式行事,直到你找到一个合适的解决方案。

你说“Gemfile”,我说是吧?我不是ruby开发人员,所以对很多术语都不熟悉。我主要用PHP编写,我只使用Ruby,因为Capistrano需要它。你知道为什么卡皮斯特拉诺要抢一个旧版本吗?它自己安装了多少个地方?啊,明白了。那么您正试图用capistrano部署一个PHP应用程序?为什么不呢,我想。。。问题很可能是您机器上安装的ruby版本很旧(因此我假设您使用的是mac,因为它们都是旧版本)。我绝对建议卸载并重新安装ruby版本和RVM,然后重新安装RVM并通过RVM安装ruby 1.9.x。然后用capistrano来做你的魔术,然后带着更多的问题回到这里。我猜你建议的问题是“卸载”ruby。我只是删除/Library/ruby文件夹吗?那么位于/etc/bin或/etc/local/bin中的版本呢……假设Ruby位于其中一个位置,那么有什么存在吗?你说“Gemfile”,我说“嗯?”?我不是ruby开发人员,所以对很多术语都不熟悉。我主要用PHP编写,我只使用Ruby,因为Capistrano需要它。你知道为什么卡皮斯特拉诺要抢一个旧版本吗?它自己安装了多少个地方?啊,明白了。那么您正试图用capistrano部署一个PHP应用程序?为什么不呢,我想。。。问题很可能是您机器上安装的ruby版本很旧(因此我假设您使用的是mac,因为它们都是旧版本)。我绝对建议卸载并重新安装ruby版本和RVM,然后重新安装RVM并通过RVM安装ruby 1.9.x。然后用capistrano来做你的魔术,然后带着更多的问题回到这里。我猜你建议的问题是“卸载”ruby。我只是删除/Library/ruby文件夹吗?关于/etc/bin或/etc/local/bin中的版本呢……假设Ruby位于其中一个位置,是否有其他版本?