Welcher Texteditor ist in der Heroku-Bash-Shell verfügbar? [geschlossen]

120

Ich versuche, httpd.conf in meiner Cedar-basierten Heroku-App zu aktualisieren. Ich bin mit zu meiner Heroku-Bash gekommen

 heroku run bash

und fand das conf dir unter apache. Wenn ich jedoch versuche, einen Editor vi, vim oder emacs zu öffnen, kann ich keines dieser Programme finden. Wie bearbeitest du Conf-Dateien auf Heroku?

Dave Thomas
quelle

Antworten:

131

Ich habe kürzlich das Original in ein Heroku-Cli-Plugin verwandelt .

Einfach installieren:

heroku plugins:install https://github.com/naaman/heroku-vim

Und benutze:

heroku vim

Der heroku vimBefehl versetzt Sie in eine Bash-Shell vim, auf der Sie installiert sind $PATH. Alles, was Sie tun müssen, ist, Ihre Finger neu zu trainieren, um heroku vimstatt zu tippen heroku run bash.

Naaman Newbold
quelle
5
@dwenaus Die Verwendung von vim in einem Prüfstand ist nur ein Tool zur Fehlerbehebung. Es ist nicht möglich, eine Verbindung zu einem laufenden Prüfstand herzustellen. Selbst wenn Sie könnten (Sie können mit einem Hack ), würden die Änderungen, die Sie innerhalb des Prüfstands vornehmen, nicht in Ihrer Schnecke bestehen bleiben. Das heißt, alle Änderungen, die Sie vorgenommen haben, gehen verloren, wenn Ihre App neu gestartet wird (alle 24 Stunden).
Naaman Newbold
4
@dwenaus ist ein weiteres Tool zur Fehlerbehebung, das Sie verwenden können - und ich würde die Verwendung dieses Tools für QS- / Staging-Apps, NICHT PRODUKTION, wärmstens empfehlen hbuild. Sie können Ihren Quellcode ohne Git-Commits ändern, sodass Sie Dinge auf Heroku ausprobieren können, ohne Ihren Git-Verlauf zu verfälschen.
Naaman Newbold
5
Eine andere Möglichkeit, das Durcheinander des Git-Verlaufs zu vermeiden, besteht darin, in einem Zweig zu arbeiten und anschließend zu bereinigen, bevor Sie mit dem Master verschmelzen. Wenn Ihr Zweig benannt ist debug-heroku, stellen Sie ihn wie folgt bereit : git push heroku debug-heroku:master.
Zubin
8
Sie sind sich nicht sicher, ob dies nicht mehr funktioniert. Das Garn wird mit "Weigert sich, das Git-Repo herunterzuladen ... über HTTPS ohne Commit-Hash - möglicher Zertifikatfehler?" Beendet.
Tim Malone
3
Diese Antwort funktioniert nicht mehr mit dem heroku-16Stack, da er zur Laufzeit nicht mehr libxtverfügbar ist . @funkenstrahlen
Jonah H.
64

Wenn Sie nicht mit Plugins herumspielen und nur eine Kopie von Nano in Ihrem einmaligen Prüfstand haben möchten, führen Sie einfach aus

mkdir /app/nano
curl https://github.com/Ehryk/heroku-nano/raw/master/heroku-nano-2.5.1/nano.tar.gz --location --silent | tar xz -C /app/nano
export PATH=$PATH:/app/nano

Dadurch wird eine Kopie von Nano von diesem Plugin heruntergeladen und in Ihren PFAD eingefügt.

James
quelle
3
Perfekt. Jetzt kann ich Konfigurationen nach Bedarf bearbeiten
Felipe
4
Scheint nicht zu funktionieren - Nano zu laufen gibt den FehlerError opening terminal: unknown.
Lewy Blue
@looeee Ich arbeite immer noch für mich. Bist du zufällig auf dem neuen Heroku-18-Stack?
James
Ich arbeite sogar für Dokku. Danke @James
Judasane
29

Es gibt, edwenn Sie ein Masochist sind.

jcomeau_ictx
quelle
4
Wie verlasse ich ed?
Jarad
1
im Befehlsmodus , q. Wenn Sie sich im Einfügemodus befinden, drucken Sie einen Punkt .in eine Zeile und geben Sie ihn ein, um in den Befehlsmodus zu gelangen. en.wikipedia.org/wiki/Ed_(text_editor)#Example
jcomeau_ictx
22

Es sieht so aus, als könnten Sie vim für eine Sitzung herunterladen und installieren:

#!/usr/bin/env bash
curl https://s3.amazonaws.com/heroku-jvm-buildpack-vi/vim-7.3.tar.gz --output vim.tar.gz
mkdir vim && tar xzvf vim.tar.gz -C vim
export PATH=$PATH:/app/vim/bin

Diese Idee wurde hier gefunden .

Brian Takita
quelle
Genau das, was ich brauchte! Einen Befehl bearbeitet und ausgeführt. Jetzt kann Heroku meine Änderungen über Nacht entfernen, ich habe meine Arbeit erledigt!
Mika
1
Weitere aktuelle Skripte
nilfalse
15

Selbst wenn Sie die Dateien damit bearbeiten könnten, viwürde dies Ihr Problem wahrscheinlich nicht lösen, da das Dateisystem kurzlebig ist. Bedeutung ... Wenn Sie eine Datei über bearbeiten, heroku run bashändern Sie die Datei nicht für andere Dynos. Um eine Datei für alle Dynos zu ändern, müssen Sie entweder ändern, was Sie in einem Git-Repo pushen, oder das Buildpack ändern. Weitere Details:
https://devcenter.heroku.com/articles/oneoff-admin-ps#formation-dynos-vs-oneoff-dynos

James Ward
quelle
21
Ich möchte die Umgebung aus debuggen heroku run bash, daher wäre vi / vim für mich sehr nützlich.
Brian Takita
3
Sie können sich jetzt mit dem eigentlichen Prüfstand verbinden heroku ps:exec.
Nicholas Morley
@NicholasMorley Sie können, aber wie würden Sie Änderungen an einer Site / App in einer Datei vornehmen?
X-Yuri
@ x-yuri Auf Heroku kann man das nicht so machen. Sie müssen die App erneut bereitstellen, um Änderungen vorzunehmen.
James Ward
Eigentlich kannst du. Sie können einen Prüfstand nehmen, auf dem eine Site ausgeführt wird, ssh in sie ( heroku ps:exec), eine Datei ändern, eine zweite Instanz des Servers starten und einen Port an den Prüfstand ( heroku ps:forward 3000) weiterleiten . Dann curl localhost:3000.
X-Yuri
6

Debuggen auf Heroku

Bereiten Sie den Prüfstand vor

Nach der Installation können naaman/heroku-vimSie über einen neuen kurzlebigen Prüfstand erstellenheroku vim . Wie in anderen Beiträgen richtig hervorgehoben, können Sie Ihre Änderungen beim Anzeigen über den Browser nicht sehen, da Änderungen nicht weitergegeben werden, aber ... Sie können die Änderungen tatsächlich im Dyno selbst anzeigen.

Ich habe nur mit "Browsen" über Curl experimentiert, aber wenn Sie lynxdort ankommen oder besser noch einen SSH-Tunnel bekommen könnten, könnte das wirklich großartig sein.

Starten Sie den Server

Der Webserver wird nicht ausgeführt, wenn Sie heroku-vim instanziieren. Sie müssen dies also selbst tun. In meinem Beispiel verwende ich PHP:

~ $ cat Procfile
web: vendor/bin/heroku-php-apache2

Sie können diesen Befehl selbst starten!

~ $ vendor/bin/heroku-php-apache2 2>/dev/null &
[2] 845

Es läuft jetzt im Hintergrund!

Locken Sie Ihre Website

Dynos werden an zufälligen Ports gestartet. Zum Glück wissen Sie, welche, weil es die $PORTVariable ist!

~ $ curl localhost:$PORT
Hello World!

Bearbeitung

Machen Sie jetzt Ihre vim-Sache, aber wenn Sie die Datei speichern und erneut locken, werden Sie die Änderungen nicht sehen. Ich verstehe nicht, wo es zwischengespeichert ist, aber es ist zwischengespeichert. Sie müssen den Server beenden und neu starten.

Server neu starten

  1. Suchen Sie die Prozess-ID

    ~ $ ps -f
    UID        PID  PPID  C STIME TTY          TIME CMD
    u6897        3     1  0 05:34 ?        00:00:00 bash
    u6897      582     3  0 05:53 ?        00:00:00 bash vendor/bin/heroku-php-apache2
    u6897      652   582  0 05:53 ?        00:00:00 bash vendor/bin/heroku-php-apache2
    u6897      653   582  0 05:53 ?        00:00:00 bash vendor/bin/heroku-php-apache2

    Hier 582ist die übergeordnete ID - verwenden Sie diese.

    kill 582
    
  2. Warten Sie nur 1 Sekunde und starten Sie den Server erneut (Sie erhalten eine neue Prozess-ID!). Wenn Sie sich mit demselben Befehl kräuseln, erhalten Sie jetzt die aktualisierte Seite.

Mikhail
quelle
Sie können tatsächlich einen Port weiterleiten und Ihren Browser anstelle von verwenden curl.
X-Yuri
5

Eine dringende Alternative zum Bearbeiten einer Datei in Heroku:

  1. Legen Sie eine Kopie davon auf einem Remote-Host ab. Ich benutze gerne Gist
  2. Bearbeiten Sie die Datei in Gist und rufen Sie die unformatierte URL ab, wenn Sie fertig sind
  3. wget die rohe URL auf Ihrer Heroku-Bash
  4. Kopieren Sie die abgerufene Datei in den Pfad der Originaldatei
Vilson Vieira
quelle
Ich finde diese Lösung perfekt für einen einmaligen Bedarf, da kein Plugin erforderlich ist.
Stéphane
2

Ich habe einen vollständigen Artikel über das Bearbeiten einer Datei auf Heroku Dynos mit Nano oder Vim geschrieben , aber im Grunde genommen:

  • Sie können die Befehlszeile verwenden:

    curl https://s3.amazonaws.com/heroku-jvm-buildpack-vi/vim-7.3.tar.gz --output vim.tar.gz mkdir vim && tar xzvf vim.tar.gz -C vim export PATH=$PATH:/app/vim/bin

  • Sie können Heroku Plugins verwenden: heroku-vim
  • Sie können Heroku Buildpacks verwenden: heroku-buildpack-vip

Ich hoffe es hilft!

Charles Bochet
quelle
Das Plugin hat bei mir nicht funktioniert : vim: error while loading shared libraries: libXt.so.6: cannot open shared object file: No such file or directory. Aber das Buildpack hat funktioniert.
X-Yuri
2

Wenn Sie nur den Inhalt der Datei anzeigen möchten, dann:

  1. CD in den Ordner, in dem sich die Datei befindet, z $ cd folder
  2. Führen Sie den Befehl cat + den Dateinamen aus, z $ cat filename.csv
Vadim Malakhovski
quelle
0

Die alternative Möglichkeit, wenn Ihr Server PHP ausführt, besteht darin, den PHP-Dateimanager hochzuladen, eine einzelne Datei, von der Sie sie herunterladen können

http://phpfm.sourceforge.net/

ewwink
quelle
0

Man kann Dateien in einem Prüfstand ändern und das Ergebnis sehen, ohne auf Heroku zu drücken:

  1. heroku-buildpack-vimBuildpack installieren :

    $ heroku buildpacks:add \
    https://github.com/carloluis/heroku-buildpack-vim
    
  2. Ssh in einen Prüfstand:

    $ heroku ps:exec
    
  3. Erstellen Sie start.sh und führen Sie es aus:

    #!/usr/bin/env bash
    set -eu
    export DATABASE_URL=...
    bin/rails s -p 4000
    
  4. Weiterleitungsport 4000 (zweite Konsole):

    $ heroku ps:forward
    
  5. Öffnen Sie localhost:4000in Ihrem Browser.

  6. Stoppen Sie start.sh, ändern Sie eine Datei, starten Sie erneut, aktualisieren Sie die Browserseite.
x-yuri
quelle