Wie verwende ich gefrorene Capistrano?
-
22-07-2019 - |
Frage
Backstory
Ich bin auf Rails 2.1 und frieren zu müssen, die Capistrano Juwel, um meinen vendor-Ordner (als mein Gastgeber gebrochen hat Ihre Mütze-gem-Abhängigkeiten, und ich will mich möglichst unabhängig).
Auf meinem lokalen windows-Rechner habe ich im folgenden meine Umgebung.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"
Die Edelsteine waren schon installiert und so habe ich erstarrte Sie.Prüfen ...
>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
Ich habe dann Begehen, um lokal und SVN update auf die pro-Linux-box.
Problem
Wenn ich versuche, und führen Sie meine gefrorenen version von Capistrano bekomme ich die folgende Fehlermeldung.
$ ./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
Irgendwelche Ideen, was ich falsch gemacht habe?
Update
Lösung
Sie haben nichts falsch gemacht.Sie sehen, dieses Thema, weil der cap
- Datei unter capistrano/bin/cap
nicht ausgeführt werden soll als stand-alone.Sehen Sie das gleiche Ergebnis, wenn Sie versuchen, führen Sie es von Ihrem primären Edelstein-Ordner.Die cap
ausführbare Datei (gespeichert auf /usr/bin/cap
auf einem standard-linux-Installation) erfordert rubygems
, Register capistrano und dann lädt die capistrano/bin/cap
Datei.
Eine Lösung wäre hinzuzufügen require 'rubygems'
zu Ihrem capistrano/bin/cap Datei:
#!/usr/bin/env ruby
require 'rubygems'
require 'capistrano/cli'
Capistrano::CLI.execute
Wenn Sie nicht ändern möchten capistrano/bin/cap
könnten Sie zählen insbesondere die rubygems-Bibliothek, wenn Sie führen Sie es mit dem -r flag.Ihre angegebenen Befehl würde wie folgt Aussehen:
$ ruby -r rubygems ./vendor/gems/capistrano-2.5.2/bin/cap deploy-with-migrations
Andere Tipps
Ein weiterer Weg, um eine bestimmte version von Capistrano wäre so etwas wie ein alias hinzufügen, um Ihre .bash_login, wie die folgenden:
alias cap1='cap _1.4.2_ '
wo cap1 ist der Befehl, den Sie ausführen, und 1.4.2 ist die version, die Sie möchten, dass der Befehl ausgeführt, dann können Sie:
cap1 deploy
würde dann verwenden Sie diese version von capistrano die Bereitstellung Ihrer Anwendung.