Editor teks apa yang tersedia di shell bash Heroku? [Tutup]

120

Saya mencoba memperbarui httpd.conf di aplikasi Heroku berbasis Cedar. Saya sampai di pesta Heroku saya

 heroku run bash

dan menemukan dir conf di bawah apache. Tetapi ketika saya mencoba membuka editor vi, vim, atau emacs, saya tidak dapat menemukan program ini. Bagaimana Anda mengedit file conf di Heroku?

Dave Thomas
sumber
Emacs dapat mengedit file melalui SSH : p

Jawaban:

131

Saya baru-baru ini mengubah inti asli menjadi plugin heroku cli .

Instal saja:

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

Dan gunakan:

heroku vim

The heroku vimperintah akan menjatuhkan Anda ke dalam shell bash dengan vimdiinstal pada Anda $PATH. Yang harus Anda lakukan adalah Retrain jari-jari Anda untuk mengetik heroku vimbukan heroku run bash.

Naaman Newbold
sumber
5
@dwenaus Menggunakan vim di dyno hanyalah alat pemecahan masalah. Tidak mungkin untuk menyambung ke dyno yang sedang berjalan. Juga, bahkan jika Anda bisa (Anda bisa dengan hack ), perubahan yang Anda buat di dalam dyno tidak akan bertahan di dalam siput Anda. artinya, setiap perubahan yang Anda buat akan hilang saat aplikasi Anda dimulai ulang (setiap 24 jam).
Naaman Newbold
4
@dwenaus alat pemecahan masalah lain yang dapat Anda gunakan - dan saya sangat menyarankan untuk menggunakan ini pada aplikasi QA / pementasan, BUKAN PRODUKSI - adalah hbuild. Ini memungkinkan Anda mengubah kode sumber Anda tanpa git commit, sehingga Anda dapat mencoba hal-hal di Heroku tanpa merusak riwayat git Anda.
Naaman Newbold
5
Cara lain untuk menghindari mengacaukan riwayat git adalah bekerja di cabang dan membersihkannya setelahnya sebelum bergabung menjadi master. Jika cabang Anda bernama debug-heroku, menyebarkan seperti ini: git push heroku debug-heroku:master.
Zubin
8
Tidak yakin ini berfungsi lagi - benang keluar dengan 'Menolak mengunduh repo git .... melalui HTTPS tanpa komit hash - kemungkinan kesalahan sertifikat?'
Tim Malone
3
Jawaban ini tidak lagi berfungsi dengan heroku-16tumpukan, karena tidak lagi libxttersedia pada waktu proses . @funkenstrahlen
Jonah H.
64

Jika Anda tidak ingin dipusingkan dengan plugin dan hanya ingin salinan nano di dyno satu kali Anda, jalankan saja

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

Ini akan mengunduh salinan nano dari plugin ini dan memasukkannya ke dalam PATH Anda.

James
sumber
3
Sempurna. Sekarang saya dapat mengedit konfigurasi sesuai kebutuhan
Felipe
4
Sepertinya tidak berfungsi - menjalankan nano memberikan kesalahanError opening terminal: unknown.
Lewy Blue
@looeee Bekerja untuk saya masih. Apakah Anda kebetulan menggunakan tumpukan heroku-18 baru?
James
Bekerja bahkan untuk Dokku. Thanks
@James
29

ada edjika Anda seorang masokis.

jcomeau_ictx
sumber
4
Bagaimana cara keluarnya ed?
Jarad
1
dalam mode perintah q,. jika Anda dalam mode sisipan, cetak satu titik .pada baris itu sendiri, lalu masuk, untuk masuk ke mode perintah. en.wikipedia.org/wiki/Ed_(text_editor)#Example
jcomeau_ictx
22

Sepertinya Anda dapat mengunduh dan menginstal vim untuk satu sesi:

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

Ide ini ditemukan di sini .

Brian Takita
sumber
Hanya yang saya butuhkan! Mengedit perintah, menjalankannya. Sekarang heroku dapat menghapus perubahan saya semalam, saya menyelesaikan pekerjaan saya!
mika
1
Lihat lebih banyak skrip terbaru di sana gist.github.com/dvdbng/7375821b20f189c189ab1bd29392c98e
nilfalse
15

Bahkan jika Anda dapat mengedit file videngannya mungkin tidak akan menyelesaikan masalah Anda karena sistem file bersifat sementara. Artinya ... Jika Anda mengedit file melalui heroku run bashAnda tidak benar-benar mengubah file untuk dino lain. Untuk mengubah file untuk semua dynos, Anda perlu mengubah apa yang Anda dorong di repo Git atau mengubah buildpack. Detail selengkapnya:
https://devcenter.heroku.com/articles/oneoff-admin-ps#formation-dynos-vs-oneoff-dynos

James Ward
sumber
21
Saya ingin men-debug lingkungan dari heroku run bash, jadi vi / vim akan sangat berguna bagi saya.
Brian Takita
3
Sekarang Anda dapat terhubung ke dyno sebenarnya dengan heroku ps:exec.
Nicholas Morley
@NicholasMorley Anda bisa, tapi bagaimana Anda akan membuat situs / aplikasi melihat perubahan dalam file?
x-yuri
@ x-yuri Anda tidak dapat melakukan hal seperti itu di Heroku. Anda perlu menerapkan ulang aplikasi untuk membuat perubahan.
James Ward
Sebenarnya Anda bisa. Anda dapat menggunakan dyno yang menjalankan situs, ssh ke dalamnya ( heroku ps:exec), mengubah file, memulai instance kedua dari server, meneruskan port ke dyno ( heroku ps:forward 3000). Kemudian curl localhost:3000,.
x-yuri
6

Debugging di Heroku

Siapkan dyno

Setelah menginstal naaman/heroku-vimAnda dapat membuat dyno singkat baru melaluiheroku vim . Seperti yang ditunjukkan dengan benar oleh posting lain, Anda tidak akan dapat melihat perubahan Anda saat melihat melalui browser karena perubahan tidak akan disebarluaskan, tetapi ... Anda sebenarnya dapat melihat perubahan dari dalam dyno itu sendiri.

Saya hanya bereksperimen dengan "browsing" melalui curl, tetapi jika Anda bisa masuk lynxke sana, atau lebih baik lagi mendapatkan terowongan ssh - bisa sangat bagus.

Mulai server

Server web tidak akan berjalan saat Anda membuat contoh heroku-vim jadi Anda harus melakukannya sendiri. Dalam contoh saya, saya menjalankan php:

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

Anda bisa memulai perintah ini sendiri!

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

Sekarang berjalan di latar belakang!

keriting situs web Anda

Dynos memulai di port acak. Untungnya Anda tahu yang mana karena itu $PORTvariabelnya!

~ $ curl localhost:$PORT
Hello World!

Mengedit

Lakukan vim Anda sekarang, tetapi ketika Anda menyimpan file dan menggulung lagi - Anda tidak akan melihat perubahannya. Saya tidak mengerti di mana itu di-cache, tapi itu di-cache. Anda harus mematikan server dan memulai ulang.

Memulai ulang server

  1. Temukan id proses

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

    Ini 582adalah id induk - gunakan itu.

    kill 582
    
  2. Tunggu hanya 1 detik, lalu mulai server lagi (Anda akan mendapatkan id proses baru!). Meringkuk melalui perintah yang sama sekarang akan memberi Anda halaman yang diperbarui.

Mikhail
sumber
Anda benar-benar dapat meneruskan port dan menggunakan browser Anda sebagai gantinya curl.
x-yuri
5

Alternatif mendesak untuk mengedit file di Heroku:

  1. tempatkan salinannya di beberapa host jarak jauh. Saya suka menggunakan Gist
  2. edit file di Gist dan setelah selesai dapatkan URL mentahnya
  3. wget URL mentah di pesta Heroku Anda
  4. salin file yang diambil ke jalur file asli
Vilson Vieira
sumber
Saya menemukan solusi ini sempurna untuk kebutuhan satu kali karena tidak diperlukan plugin.
Stéphane
2

Saya menulis artikel lengkap tentang Cara Mengedit File di Heroku Dynos menggunakan Nano atau Vim , tetapi pada dasarnya:

  • Anda dapat menggunakan baris perintah:

    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

  • Anda dapat menggunakan Plugin Heroku: heroku-vim
  • Anda dapat menggunakan Heroku Buildpacks: heroku-buildpack-vip

Semoga membantu!

Charles Bochet
sumber
Plugin tidak bekerja untuk saya: vim: error while loading shared libraries: libXt.so.6: cannot open shared object file: No such file or directory. Tapi buildpack berhasil.
x-yuri
2

Jika Anda hanya ingin melihat konten file, maka:

  1. cd ke folder tempat file tersebut berada misalnya $ cd folder
  2. jalankan perintah cat + nama file mis $ cat filename.csv
Vadim Malakhovski
sumber
0

cara alternatif jika server Anda menjalankan php adalah dengan mengunggah File Manager PHP, itu adalah file tunggal dan Anda dapat mendownloadnya dari

http://phpfm.sourceforge.net/

ewwink
sumber
0

Seseorang dapat mengubah file di dyno dan melihat hasilnya tanpa mendorong ke Heroku:

  1. Instal heroku-buildpack-vimbuildpack:

    $ heroku buildpacks:add \
    https://github.com/carloluis/heroku-buildpack-vim
    
  2. Ssh menjadi dyno:

    $ heroku ps:exec
    
  3. Buat dan jalankan start.sh:

    #!/usr/bin/env bash
    set -eu
    export DATABASE_URL=...
    bin/rails s -p 4000
    
  4. Port depan 4000 (konsol kedua):

    $ heroku ps:forward
    
  5. Buka localhost:4000di browser Anda.

  6. Berhenti start.sh, ubah file, mulai lagi, segarkan halaman browser.
x-yuri
sumber