Який текстовий редактор доступний в оболонці Heroku bash? [зачинено]


120

Я намагаюся оновити httpd.conf в моєму додатку Heroku на основі кедра. Я потрапив до мого Хероку з Баш

 heroku run bash

і знайшов confir dir під apache. Але коли я намагаюся відкрити будь-який редактор vi, vim або emacs, я не можу знайти жодну з цих програм. Як редагувати файли конф на Heroku?


Відповіді:


131

Нещодавно я перетворив оригінальну суть у плагін heroku cli .

Просто встановіть:

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

І використовуйте:

heroku vim

heroku vimКоманда доставлять вас в Баш оболонки з vimвстановленими на ваших $PATH. Все, що вам потрібно зробити, - це перевчити пальці, а не вводити heroku vimїх heroku run bash.


5
@dwenaus Використання vim in dyno - це лише інструмент усунення несправностей. Неможливо підключитися до запущеного дина. Крім того, навіть якщо б ви могли (можна з хаком ), зміни, які ви вносите всередину дино, не будуть зберігатися всередині вашого куля. тобто будь-які внесені вами зміни будуть втрачені при перезапуску програми (кожні 24 години).
Неаман Ньюболд

4
@dwenaus - ще один інструмент усунення несправностей, який ви можете використовувати - і я настійно рекомендую використовувати це для програм QA / постановки, а не для виробництва - hbuild. Це дозволяє вам змінювати свій вихідний код без git комітетів, так що ви можете спробувати речі на Heroku, не псуючи свою історію git.
Неаман Ньюболд

5
Ще один спосіб уникнути зіпсування історії git - це працювати у відділенні та прибирати згодом перед тим, як об’єднатися у master. Якщо гілка називається debug-heroku, розгорнути так: git push heroku debug-heroku:master.
Зубін

8
Не впевнений, що це вже працює - пряжа виходить із "Відмовою завантажувати git repo .... через HTTPS без хеш-файлу" - можлива помилка сертифіката? "
Тім Малоун

3
Ця відповідь більше не працює зі heroku-16стеком, оскільки він більше не libxtдоступний під час виконання . @funkenstrahlen
Jonah H.

64

Якщо ви не хочете возитися з плагінами і просто хочете копію нано у вашому одноразовому дино, просто запустіть

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

Це завантажить копію нано з цього плагіна і помістить її у вашу ПАТ.


3
Ідеально. Тепер я можу редагувати конфігурації за потребою
Феліпе

4
Здається, не працює - запуск нано видає помилкуError opening terminal: unknown.
Lewy Blue

@looeee Ще працює для мене. Ви випадково опиняєтесь на новому стеку heroku-18?
Джеймс

Працюючи навіть для Dokku. Дякую @James
Judasane


22

Схоже, ви можете завантажити та встановити 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

Ця ідея була знайдена тут .


Тільки те, що мені було потрібно! Відредагував команду, запустив її. Тепер heroku можу зняти мої зміни протягом ночі, я закінчив свою роботу!
mika

1
Дивіться більше оновленого сценарію там gist.github.com/dvdbng/7375821b20f189c189ab1bd29392c98e
nilfalse

15

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


21
Я хотів би налагодити оточення heroku run bash, тому vi / vim був би дуже корисним для мене.
Брайан Такіта

3
Тепер ви можете підключитися до фактичного dyno за допомогою heroku ps:exec.
Ніколас Морлі

@NicholasMorley Ви можете, але як би ви внесли зміни до сайту / програми у файл?
x-yuri

@ x-yuri Не можна робити так, як на Heroku. Щоб внести зміни, потрібно повторно застосувати додаток.
Джеймс Уорд

Насправді можна. Ви можете взяти dyno, на якому працює сайт, сш в нього ( heroku ps:exec), змінити файл, запустити другий екземпляр сервера, переслати порт до dyno ( heroku ps:forward 3000). Тоді curl localhost:3000.
x-yuri



6

Налагодження на Heroku

Підготуйте дино

Після установки naaman/heroku-vimви можете створити нове ефемерне дино через heroku vim. Як правильно вказано в інших публікаціях, ви не зможете побачити зміни під час перегляду через веб-переглядач, оскільки зміни не будуть поширюватися, але ... ви можете реально переглянути зміни всередині самого dyno.

Я лише експериментував з "переглядом" через curl, але якщо ви зможете потрапити lynxтуди, а ще краще дістати тунель ssh - це може бути справді чудово.

Запустіть сервер

Веб-сервер не працюватиме, коли ви інстанціюєте heroku-vim, тому вам потрібно буде зробити це самостійно. У своєму прикладі я запускаю php:

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

Ви можете запустити цю команду самостійно!

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

Зараз він працює у фоновому режимі!

згортайте свій веб-сайт

Dynos запускається на випадкових портах. На щастя, ви знаєте, яка саме, тому що це $PORTзмінна!

~ $ curl localhost:$PORT
Hello World!

Редагування

Зробіть свою справу vim зараз, але коли ви збережете файл і згортаєте його, ви не побачите змін. Я не розумію, де це кешоване, але це кешоване. Ви повинні вбити сервер і перезапустити його.

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

  1. Знайдіть ідентифікатор процесу

    ~ $ 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
    
  2. Зачекайте лише 1 секунду, а потім запустіть сервер знову (ви отримаєте новий ідентифікатор процесу!). Керлінг за допомогою тієї самої команди тепер надасть вам оновлену сторінку.


Ви можете фактично переслати порт і використовувати свій браузер замість curl.
x-yuri

5

Нагальна альтернатива редагування файлу в Heroku:

  1. розмістіть його копію на якомусь віддаленому хості. Мені подобається використовувати Gist
  2. відредагуйте файл на Gist і, коли закінчите, отримайте його необроблену URL-адресу
  3. wget нераціональна URL-адреса вашого башти Heroku
  4. скопіюйте отриманий файл на шлях вихідного файлу

Я вважаю це рішення ідеальним для разової потреби, оскільки плагін не потрібен.
Стефан

2

Я написав повну статтю про те, як редагувати файл на 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: heroku-vim
  • Ви можете використовувати Heroku Buildpacks: heroku-buildpack-vip

Сподіваюся, це допомагає!


Плагін не працює для мене vim: error while loading shared libraries: libXt.so.6: cannot open shared object file: No such file or directory. Але buildpack справді працював.
x-yuri

2

Якщо ви хочете просто переглянути вміст файлу, виконайте вказані нижче дії.

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


0

Альтернативний спосіб, якщо ваш сервер запущений php - завантажити PHP File Manager, це єдиний файл, і ви можете завантажити його з

http://phpfm.sourceforge.net/


0

Можна змінити файли в дино і переглянути результат, не натискаючи на Heroku:

  1. Встановити heroku-buildpack-vimbuildpack:

    $ 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, змініть файл, почніть знову, оновіть сторінку браузера.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.