我如何使用冷冻Capistrano的?
-
22-07-2019 - |
题
背景故事
我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
任何想法我做错了?
更新
解决方案
您有没有做错什么。你看到这个问题,因为下cap
的capistrano/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的的部署应用程序。
不隶属于 StackOverflow