背景故事

我on Rails的2.1和需要的Capistrano的宝石冻结我的供应商的文件夹(如我的主机已经打破了他们的帽gem依赖,我想使自己尽可能的独立)。

在我的本地Windows机器我已经把我下面的environment.rb

config.gem "capistrano", :version => "2.5.2"
config.gem "net-ssh", :lib => "net/ssh", :version => "2.0.4"
config.gem "net-scp", :lib => "net/scp", :version => "1.0.1"
config.gem "net-sftp", :lib => "net/sftp", :version => "2.0.1"
config.gem "net-ssh-gateway", :lib => "net/ssh/gateway", :version => "1.0.0"

在宝石已经安装,所以我愣它们。检查...

>rake gems
...
[F] capistrano = 2.5.2
[F] net-ssh = 2.0.4
[F] net-scp = 1.0.1
[F] net-sftp = 2.0.1
[F]net-ssh-gateway = 1.0.0

然后我承诺SVN本地和更新在PROD Linux机器。

问题

当我尝试运行我的Capistrano的的冻结版本,我得到了下面的错误。

$ ./vendor/gems/capistrano-2.5.2/bin/cap deploy-with-migrations 
./vendor/gems/capistrano-2.5.2/bin/cap:3:in `require': no such file to load --capistrano/cli (LoadError)
    from ./vendor/gems/capistrano-2.5.2/bin/cap:3

任何想法我做错了?

更新

查看新的相关问题

有帮助吗?

解决方案

您有没有做错什么。你看到这个问题,因为下capcapistrano/bin/cap文件并不意味着要运行作为一个独立的。你会看到同样的结果,如果你尝试从初级宝石文件夹中运行它。所述cap可执行文件(在标准Linux安装储存在/usr/bin/cap)需要rubygems,寄存器Capistrano的和然后的加载capistrano/bin/cap文件。

一个解决方案,这将是require 'rubygems'添加到您的Capistrano的/ bin中/ cap的文件中:

#!/usr/bin/env ruby
require 'rubygems'
require 'capistrano/cli'
Capistrano::CLI.execute

如果你不想修改capistrano/bin/cap你可以具体包括RubyGems的库当您运行使用-r标志吧。你给出的命令是这样的:

$ ruby -r rubygems ./vendor/gems/capistrano-2.5.2/bin/cap deploy-with-migrations

其他提示

使用Capistrano的特定版本的另一种方式会是这样的,一个别名添加到您的.bash_login文件类似如下:

alias cap1='cap _1.4.2_ '

其中CAP1是将运行命令的 1.4.2 的是你想要的命令来运行的版本,那么您可以:

cap1 deploy

然后将使用该版本Capistrano的的部署应用程序。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top