Quale editor di testo è disponibile nella shell bash di Heroku? [chiuso]


120

Sto cercando di aggiornare httpd.conf nella mia app Heroku basata su Cedar. Sono arrivato alla mia festa di Heroku con

 heroku run bash

e ho trovato la conf dir sotto apache. Ma quando provo ad aprire qualsiasi editor vi, vim o emacs, non riesco a trovare nessuno di questi programmi. Come modifichi i file di configurazione su Heroku?


Risposte:


131

Recentemente ho trasformato l' essenza originale in un plugin cli heroku .

Basta installare:

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

E usa:

heroku vim

Il heroku vimcomando ti farà cadere in una shell bash con viminstallato sul tuo $PATH. Tutto quello che devi fare è riqualificare le dita per digitare heroku viminvece di heroku run bash.


5
@dwenaus Usare vim in un banco prova è solo uno strumento per la risoluzione dei problemi. Non è possibile connettersi a un banco prova in esecuzione. Inoltre, anche se potessi (puoi farlo con un hack ), le modifiche apportate all'interno del banco prova non verrebbero mantenute all'interno del tuo slug. ad esempio, qualsiasi modifica apportata andrebbe persa al riavvio dell'app (ogni 24 ore).
Naaman Newbold

4
@dwenaus è un altro strumento di risoluzione dei problemi che puoi utilizzare e consiglio vivamente di utilizzarlo su app QA / di gestione temporanea, NON PRODUZIONE hbuild. Ti consente di cambiare il tuo codice sorgente senza git commit, così puoi provare cose su Heroku senza rovinare la tua cronologia git.
Naaman Newbold

5
Un altro modo per evitare di incasinare la cronologia di git è lavorare in un ramo e ripulire in seguito prima di fondersi in master. Se il ramo si chiama debug-heroku, distribuire in questo modo: git push heroku debug-heroku:master.
Zubin

8
Non sono sicuro che funzioni più: il filato esce con "Rifiuto di scaricare il repository git ... su HTTPS senza un hash di commit - possibile errore del certificato?"
Tim Malone

3
Questa risposta non funziona più con lo heroku-16stack, poiché non è più libxtdisponibile in fase di esecuzione . @funkenstrahlen
Jonah H.

64

Se non vuoi scherzare con i plugin e vuoi solo una copia di nano nel tuo banco prova, corri

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

Questo scaricherà una copia di nano da questo plugin e la inserirà nel tuo PATH.


3
Perfetto. Ora posso modificare le configurazioni secondo necessità
Felipe

4
Non sembra funzionare - l'esecuzione di nano dà l'erroreError opening terminal: unknown.
Lewy Blue

@looeee sta ancora lavorando per me. Sei sul nuovo stack heroku-18 per caso?
James,

Lavorando anche per Dokku. Grazie @James
judasane


22

Sembra che tu possa scaricare e installare vim per una sessione:

#!/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

Questa idea è stata trovata qui .


Proprio quello di cui avevo bisogno! Ha modificato un comando, lo ha eseguito. Ora heroku può rimuovere le mie modifiche durante la notte, ho fatto il mio lavoro!
mika


15

Anche se potessi modificare i file con viesso, probabilmente non risolverebbe il tuo problema perché il file system è effimero. Significato ... Se modifichi un file tramite heroku run bashnon stai effettivamente cambiando il file per altri dynos. Per modificare un file per tutti i dynos è necessario modificare ciò che si inserisce in un repository Git o modificare il buildpack. Maggiori dettagli:
https://devcenter.heroku.com/articles/oneoff-admin-ps#formation-dynos-vs-oneoff-dynos


21
Vorrei eseguire il debug dell'ambiente da heroku run bash, quindi vi / vim sarebbe molto utile per me.
Brian Takita

3
Ora puoi connetterti al banco prova effettivo con heroku ps:exec.
Nicholas Morley

@NicholasMorley Puoi, ma come faresti a modificare le note di un sito / app in un file?
x-yuri

@ x-yuri Non puoi fare le cose in questo modo su Heroku. È necessario ridistribuire l'app per apportare modifiche.
James Ward

In realtà puoi. Puoi prendere un dyno che esegue un sito, ssh in esso ( heroku ps:exec), modificare un file, avviare una seconda istanza del server, inoltrare una porta a dyno ( heroku ps:forward 3000). Poi, curl localhost:3000.
x-yuri



6

Debug su Heroku

Prepara il banco prova

Dopo l'installazione naaman/heroku-vimè possibile creare un nuovo dyno effimero tramite heroku vim. Come sottolineato correttamente da altri post, non sarai in grado di vedere le tue modifiche durante la visualizzazione attraverso il browser perché le modifiche non verranno propagate, ma ... puoi effettivamente visualizzare le modifiche dall'interno del dyno stesso.

Ho solo provato a "navigare" tramite curl, ma se potessi arrivarci lynx, o meglio ancora ottenere un tunnel ssh, potrebbe essere davvero fantastico.

Avvia il server

Il server web non sarà in esecuzione quando installi heroku-vim, quindi dovrai farlo da solo. Nel mio esempio sto eseguendo php:

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

Puoi avviare questo comando da solo!

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

Ora è in esecuzione in background!

arriccia il tuo sito web

Dynos si avvia su porte casuali. Per fortuna sai quale perché è la $PORTvariabile!

~ $ curl localhost:$PORT
Hello World!

La modifica

Fai la tua cosa vim ora, ma quando salvi il file e arriccia di nuovo, non vedrai le modifiche. Non capisco dove sia memorizzato nella cache, ma è memorizzato nella cache. Devi uccidere il server e riavviarlo.

Riavvio del server

  1. Trova l'ID del processo

    ~ $ 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

    Ecco 582l'ID genitore: usalo.

    kill 582
    
  2. Attendi solo 1 secondo, quindi riavvia il server (otterrai un nuovo ID di processo!). Il curling tramite lo stesso comando ora ti darà la pagina aggiornata.


Puoi effettivamente inoltrare una porta e utilizzare il tuo browser al posto di curl.
x-yuri

5

Un'alternativa urgente per modificare un file in Heroku:

  1. posizionane una copia su un host remoto. Mi piace usare Gist
  2. modifica il file su Gist e al termine ottieni l'URL grezzo
  3. wget l'URL grezzo sul tuo Heroku bash
  4. copia il file recuperato nel percorso del file originale

Trovo questa soluzione perfetta per una necessità una tantum in quanto non è necessario alcun plug-in.
Stéphane

2

Ho scritto un articolo completo su Come modificare un file su Heroku Dynos usando Nano o Vim , ma fondamentalmente:

  • Puoi usare la riga di comando:

    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

  • Puoi usare i plugin Heroku: heroku-vim
  • Puoi usare Heroku Buildpacks: heroku-buildpack-vip

Spero che sia d'aiuto!


Il plugin non ha funzionato per me: vim: error while loading shared libraries: libXt.so.6: cannot open shared object file: No such file or directory. Ma il buildpack ha funzionato.
x-yuri

2

Se desideri visualizzare solo il contenuto del file, allora:

  1. cd nella cartella in cui si trova il file es $ cd folder
  2. eseguire il comando cat + il nome del file es $ cat filename.csv


0

il modo alternativo se il tuo server esegue php è caricare PHP File Manager, è un singolo file e puoi scaricarlo da

http://phpfm.sourceforge.net/


0

Si può cambiare file in un banco prova e vedere il risultato senza spingere a Heroku:

  1. Installa heroku-buildpack-vimbuildpack:

    $ heroku buildpacks:add \
    https://github.com/carloluis/heroku-buildpack-vim
    
  2. Ssh in un banco prova:

    $ heroku ps:exec
    
  3. Crea ed esegui start.sh:

    #!/usr/bin/env bash
    set -eu
    export DATABASE_URL=...
    bin/rails s -p 4000
    
  4. Porta di inoltro 4000 (seconda console):

    $ heroku ps:forward
    
  5. Apri localhost:4000nel tuo browser.

  6. Ferma start.sh, cambia un file, ricomincia, aggiorna la pagina del browser.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.