1

裏話

私は Rails 2.1 を使用しており、Capistrano gem をベンダー フォルダーにフリーズする必要があります (私のホストは cap 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"

gem は既にインストールされているので、凍結しました。チェック中 ...

>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

私が間違ったことをしたアイデアはありますか?

アップデート

新しい関連する質問を参照してください

4

2 に答える 2

2

あなたは何も悪いことをしていません。cap下のファイルcapistrano/bin/capはスタンドアロンとして実行することを意図していないため、この問題が発生しています。プライマリ gem フォルダーから実行しようとすると、同じ結果が表示されます。実行可能ファイル (標準のLinux インストールにcap保存されている) には が必要で、capistrano を登録してから、ファイルロードします。/usr/bin/caprubygemscapistrano/bin/cap

require 'rubygems'これに対する 1 つの解決策は、capistrano/bin/cap ファイルに追加することです。

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

変更したくない場合はcapistrano/bin/cap、 -r フラグを使用して実行するときに ruby​​gems ライブラリを具体的に含めることができます。指定されたコマンドは次のようになります。

$ ruby -r rubygems ./vendor/gems/capistrano-2.5.2/bin/cap deploy-with-migrations
于 2008-12-02T07:46:42.327 に答える
1

特定のバージョンの Capistrano を使用する別の方法は、次のように .bash_login にエイリアスを追加することです。

alias cap1='cap _1.4.2_ '

ここで、cap1 は実行するコマンドで、1.4.2はそのコマンドを実行するバージョンです。次のことができます。

cap1 deploy

その後、そのバージョンの capistrano を使用してアプリケーションをデプロイします。

于 2009-03-13T11:41:33.927 に答える