¿Qué editor de texto está disponible en Heroku bash shell?


Estoy intentando actualizar httpd.conf en mi aplicación Heroku basada en Cedro. Llegué a mi fiesta de Heroku con

 heroku run bash

Y encontró el dir conf bajo apache. Pero cuando intento abrir cualquier editor vi, vim o emacs, no puedo encontrar ninguno de estos programas. Cómo editar archivos conf en Heroku?

Author: Damjan Pavlica, 2012-10-01

10 answers

Recientemente convertí el gist original en un heroku cli plugin.

Simplemente instale:

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

Y uso:

heroku vim

El comando heroku vim te llevará a un shell bash con vim instalado en tu $PATH. Todo lo que tienes que hacer es volver a entrenar tus dedos para escribir heroku vim en lugar de heroku run bash.

 115
Author: Naaman Newbold,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-25 07:08:07

Si no quieres perder el tiempo con los complementos y solo quieres una copia de nano en tu dyno único, simplemente ejecuta

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

Esto descargará una copia de nano desde este plugin y lo pondrá en su CAMINO.

 28
Author: James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-09 12:54:23

Hay ed si eres masoquista.

 22
Author: jcomeau_ictx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-20 21:35:45

Parece que puede descargar e instalar vim para una sesión:

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

Esta idea se encontró aquí.

 18
Author: Brian Takita,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-17 19:38:53

Incluso si pudiera editar los archivos con vi probablemente no resolvería su problema porque el sistema de archivos es efímero. Significado... Si edita un archivo a través de heroku run bash, en realidad no está cambiando el archivo para otros dynos. Para cambiar un archivo para todos los dynos necesitas cambiar lo que envías en un repositorio Git o cambiar el buildpack. Más details:
https://devcenter.heroku.com/articles/oneoff-admin-ps#formation-dynos-vs-oneoff-dynos

 11
Author: James Ward,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-01 13:03:21

Depuración en Heroku

Preparar el dinamómetro

Después de instalar naaman/heroku-vim puede crear un nuevo dinamómetro efímero a través de heroku vim. Como se señala correctamente por otros mensajes que no será capaz de ver sus cambios al ver a través del navegador porque los cambios no se propagan, pero... en realidad, puede ver los cambios desde el interior del propio banco de pruebas.

Solo he experimentado con "navegar" a través de curl, pero si pudiera obtener lynx allí, o mejor aún obtener un túnel ssh could podría ser realmente genial.

Inicie el servidor

El servidor web no se ejecutará cuando instancies heroku-vim, por lo que tendrás que hacerlo tú mismo. En mi ejemplo estoy ejecutando php:

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

Puede iniciar este comando usted mismo!

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

¡Ahora se está ejecutando en segundo plano!

Curl su sitio web

Los dynos se inician en puertos aleatorios. Afortunadamente sabes cuál porque es la variable $PORT!

~ $ curl localhost:$PORT
Hello World!

Edición

Haz lo tuyo con vim ahora, pero cuando guarde el archivo y curl de nuevo-no verá los cambios. No entiendo dónde está en caché, pero está en caché. Tienes que matar el servidor y reiniciarlo.

Reiniciar el servidor

  1. Encuentra el id del proceso

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

    Aquí 582 está el id padre use use eso.

    kill 582
    
  2. Espere solo 1 segundo, y luego inicie el servidor de nuevo (obtendrá un nuevo id de proceso!). Curling a través del mismo comando ahora le dará la actualización pagina.

 5
Author: Mikhail,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-12 12:15:57

En los comentarios sobre el enlace de respuesta de Brian Takita, existe la solución más reciente para que Vim funcione en la consola Heroku:

Https://gist.github.com/dvdbng/7375821b20f189c189ab1bd29392c98e

Me acaba de ahorrar un montón de tiempo! :)

 5
Author: Jared,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-03 18:53:29

Una alternativa urgente para editar un archivo en Heroku:

  1. coloque una copia en algún host remoto. Me gusta usar Gist
  2. edite el archivo en Gist y cuando termine obtenga la URL sin procesar
  3. wget la URL sin procesar en su Heroku bash
  4. copie el archivo obtenido a la ruta del archivo original
 4
Author: Vilson Vieira,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-16 18:07:03

La forma alternativa si su servidor ejecuta php es cargar el Gestor de archivos PHP, que solo archivo y se puede descargar desde

http://phpfm.sourceforge.net/

 0
Author: ewwink,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-02 19:09:34

Ahora hay una serie de buildpacks que incluyen vim: https://elements.heroku.com/search/buildpacks?q=vim

Puede agregar uno de estos a la aplicación Heroku en cuestión, usando support buildpack support.

 0
Author: wodow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-09 10:36:21