Какой текстовый редактор доступен в оболочке Heroku bash?

Я пытаюсь обновить httpd.conf в своем кедровом приложении Heroku. Я добрался до своего Heroku bash с помощью

 heroku run bash

и нашел conf dir под apache. Но когда я пытаюсь открыть любой редактор vi, vim или emacs, я не могу найти ни одну из этих программ. Как вы редактируете файлы conf на Heroku?

Ответ 1

Недавно я превратил оригинальный gist в плагин heroku cli.

Просто установите:

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

И используйте:

heroku vim

Команда heroku vim выведет вас в оболочку bash с vim, установленную на вашем $PATH. Все, что вам нужно сделать, - переустановить свои пальцы, чтобы ввести heroku vim вместо heroku run bash.

Ответ 2

Если вы не хотите возиться с плагинами и просто хотите получить копию nano в своем одноразовом динамо, просто запустите

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

Это загрузит копию nano из этого плагина и поместит ее в вашу переменную PATH.

Ответ 3

там ed, если вы мазохист.

Ответ 4

Похоже, вы можете скачать и установить vim для одного сеанса:

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

Эта идея была найдена здесь.

Ответ 5

Даже если вы можете редактировать файлы с помощью vi, это, вероятно, не решит вашу проблему, потому что файловая система является эфемерной. Значение... Если вы редактируете файл через heroku run bash, вы фактически не меняете файл для других динамиков. Чтобы изменить файл для всех динамиков, вам нужно либо изменить то, что вы нажимаете на репозиторий Git, либо изменить buildpack. Подробнее:
https://devcenter.heroku.com/articles/oneoff-admin-ps#formation-dynos-vs-oneoff-dynos

Ответ 7

В комментариях к ответной ссылке Брайана Такиты есть более свежее решение, позволяющее Vim работать с консолью Heroku:

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

Просто сэкономил мне много времени! :)

Ответ 8

Отладка на Heroku

Подготовьте dyno

После установки naaman/heroku-vim вы можете создать новый эфемерный dyno через heroku vim. Как было правильно указано другими сообщениями, вы не сможете увидеть свои изменения при просмотре через браузер, потому что изменения не будут распространяться, но... вы можете просмотреть изменения внутри самого динамика.

Я только экспериментировал с "просмотром" через curl, но если бы вы могли получить lynx там или, лучше всего, получить туннель ssh, может быть действительно здорово.

Запустите сервер

Веб-сервер не будет запущен, когда вы создадите герою-вим, поэтому вам нужно будет сделать это самостоятельно. В моем примере я запускаю php:

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

Вы можете запустить эту команду самостоятельно!

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

Теперь он работает в фоновом режиме!

скручивайте свой сайт

Запуск динамиков на случайных портах. К счастью, вы знаете, какой из них, потому что это переменная $PORT!

~ $ curl localhost:$PORT
Hello World!

Редактирование

Теперь сделайте свой vim, но когда вы сохраните файл и закрутите его снова, вы не увидите изменений. Я не понимаю, где он кэшируется, но он кэшируется. Вы должны убить сервер и перезапустить его.

Перезапуск сервера

  • Найти идентификатор процесса

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

    Здесь 582 является родительским идентификатором - используйте это.

    kill 582
    
  • Подождите всего 1 секунду, а затем снова запустите сервер (вы получите новый идентификатор процесса!). Керлинг с помощью той же команды теперь даст вам обновленную страницу.

Ответ 9

Актуальная альтернатива редактированию файла в Heroku:

  • поместите его копию на какой-либо удаленный хост. Мне нравится использовать Gist
  • отредактируйте файл в Gist и по окончании получите исходный URL-адрес.
  • wget исходный URL-адрес вашего Heroku bash
  • скопировать извлеченный файл в путь к исходному файлу

Ответ 10

Я написал полную статью о том, как редактировать файл на Heroku Dynos, используя Nano или Vim, но в основном:

  • Вы можете использовать командную строку:

    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

  • Вы можете использовать Heroku Plugins: heroku-vim
  • Вы можете использовать Heroku Buildpacks: heroku-buildpack-vip

Надеюсь, поможет!

Ответ 11

Если вы хотите просто просмотреть содержимое файла, то:

  1. перейдите в папку, в которой находится файл, например, в $ cd folder
  2. запустить команду cat + имя файла, например, $ cat filename.csv

Ответ 13

альтернативный способ, если ваш сервер запускает php, должен загрузить PHP File Manager, это один файл, и вы можете загрузить его из

http://phpfm.sourceforge.net/

Ответ 14

Можно изменить файлы в Dyno и увидеть результат, не нажимая на Heroku:

  1. Установите heroku-buildpack-vim buildpack:

    $ heroku buildpacks:add \
    https://github.com/carloluis/heroku-buildpack-vim
    
  2. Ssh в динамо:

    $ heroku ps:exec
    
  3. Создайте и запустите start.sh:

    #!/usr/bin/env bash
    set -eu
    export DATABASE_URL=...
    bin/rails s -p 4000
    
  4. Порт пересылки 4000 (вторая консоль):

    $ heroku ps:forward
    
  5. Откройте localhost:4000 в своем браузере.

  6. Остановите start.sh, измените файл, начните снова, обновите страницу браузера.