Heroku bash shell'de hangi metin düzenleyici mevcuttur? [kapalı]


120

Cedar tabanlı Heroku uygulamamda httpd.conf'u güncellemeye çalışıyorum. Heroku bash'ıma birlikte gittim

 heroku run bash

ve conf dizinini apache altında buldu. Ancak herhangi bir düzenleyici vi, vim veya emacs'i açmaya çalıştığımda, bu programların hiçbirini bulamıyorum. Heroku'da conf dosyalarını nasıl düzenlersiniz?


Yanıtlar:


131

Yakın zamanda orijinal özü bir heroku cli eklentisine çevirdim .

Sadece kurun:

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

Ve kullan:

heroku vim

heroku vimİle komutu bir bash kabuğu içine düşecek vimbilgisayarınızda yüklü $PATH. Tek yapmanız gereken parmaklarınızı yazmak heroku vimyerine yeniden eğitmektir heroku run bash.


5
@dwenaus Bir dinamoda vim kullanmak yalnızca bir sorun giderme aracıdır. Çalışan bir dinamoya bağlanmak mümkün değildir. Ayrıca, yapabilseniz bile (bir hack ile yapabilirsiniz ), dyno içinde yaptığınız değişiklikler bilginizin içinde kalıcı olmayacaktır. yani, yaptığınız tüm değişiklikler, uygulamanız yeniden başlatıldığında (her 24 saatte bir) kaybolur.
Naaman Newbold

4
@dwenaus kullanabileceğiniz başka bir sorun giderme aracı - ve bunu, ÜRETİM DEĞİL, KG / hazırlık uygulamalarında kullanmanızı şiddetle tavsiye ederim - hbuild. Git taahhütleri olmadan kaynak kodunuzu değiştirmenize izin verir, böylece git geçmişinizi bozmadan Heroku'daki şeyleri deneyebilirsiniz.
Naaman Newbold

5
Git geçmişini karıştırmaktan kaçınmanın bir başka yolu da bir dalda çalışmak ve ana ile birleştirmeden önce daha sonra temizlemektir. Şube adı verilirse debug-heroku, böyle dağıtmak: git push heroku debug-heroku:master.
Zubin

8
Bunun artık çalıştığından emin değilim - iplik, 'HTTPS üzerinden git repo'yu indirmeyi reddetme - olası sertifika hatası?'
Tim Malone

3
Çalışma zamanında artık mevcut olmadığındanheroku-16 , bu yanıt artık yığınla çalışmıyor . @funkenstrahlenlibxt
Jonah

64

Eklentilerle uğraşmak istemiyor ve tek seferlik dinamonuzda nano'nun bir kopyasını istiyorsanız,

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

Bu, bu eklentiden nano'nun bir kopyasını indirecek ve PATH'inize koyacaktır.


3
Mükemmel. Şimdi yapılandırmaları gerektiği gibi düzenleyebilirim
Felipe

4
Çalışmıyor - nano çalıştırmak hata veriyorError opening terminal: unknown.
Lewy Blue

@looeee Benim için hala çalışıyor. Şans eseri yeni heroku-18 yığınında mısınız?
James

Dokku için bile çalışıyor. Teşekkürler @James
judasane


22

Görünüşe göre vim'i bir oturum için indirip kurabilirsiniz:

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

Bu fikir burada bulundu .


Tam ihtiyacım olan şey! Bir komutu düzenledim, çalıştırdım. Artık heroku değişikliklerimi gece boyunca kaldırabilir, işimi tamamladım!
mika


15

Dosyaları onunla düzenleyebilseniz bile vimuhtemelen sorununuzu çözmez çünkü dosya sistemi geçicidir. Anlamı ... Aracılığıyla bir dosyayı düzenlerseniz heroku run bash, aslında dosyayı diğer dinozorlar için değiştirmezsiniz. Tüm dynos'lar için bir dosyayı değiştirmek için, bir Git deposundaki ittiğinizi veya yapı paketini değiştirmeniz gerekir. Daha fazla ayrıntı:
https://devcenter.heroku.com/articles/oneoff-admin-ps#formation-dynos-vs-oneoff-dynos


21
Ortamda hata ayıklamak istiyorum heroku run bash, bu nedenle vi / vim benim için çok faydalı olacaktır.
Brian Takita

3
Artık gerçek dinamoya ile bağlanabilirsiniz heroku ps:exec.
Nicholas Morley

@NicholasMorley Yapabilirsiniz, ancak bir sitenin / uygulamanın bir dosyadaki değişiklikleri bildirmesini nasıl sağlarsınız?
x-yuri

@ x-yuri Heroku'da bu şekilde şeyler yapamazsınız. Değişiklik yapmak için uygulamayı yeniden dağıtmanız gerekir.
James Ward

Aslında yapabilirsin. Bir site çalıştıran bir dyno alabilir, içine ssh ( heroku ps:exec), bir dosyayı değiştirebilir, sunucunun ikinci bir örneğini başlatabilir, dyno ( heroku ps:forward 3000) 'ya bir bağlantı noktası iletebilirsiniz . Ardından curl localhost:3000,.
x-yuri



6

Heroku'da hata ayıklama

Dynoyu hazırlayın

Kurduktan sonra naaman/heroku-vim, aracılığıyla yeni bir kısa ömürlü dinamo oluşturabilirsiniz heroku vim. Diğer gönderiler tarafından doğru bir şekilde belirtildiği gibi, değişikliklerinizi tarayıcıdan görüntülerken göremezsiniz çünkü değişiklikler yayılmayacaktır, ancak ... değişiklikleri gerçekten dyno'nun içinden görüntüleyebilirsiniz.

Ben sadece curl aracılığıyla "göz atmayı" denedim, ancak lynxoraya gidebilirseniz veya daha iyisi bir ssh tüneli alırsanız - gerçekten harika olabilir.

Sunucuyu başlatın

Heroku-vim örneğini oluşturduğunuzda web sunucusu çalışmayacağı için bunu kendiniz yapmanız gerekecektir. Örneğimde php çalıştırıyorum:

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

Bu komutu kendiniz başlatabilirsiniz!

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

Şimdi arka planda çalışıyor!

web sitenizi kıvırın

Dynos rastgele bağlantı noktalarında başlar. Neyse ki hangisinin $PORTdeğişkeni olduğunu biliyorsunuz !

~ $ curl localhost:$PORT
Hello World!

düzenleme

Şimdi vim işinizi yapın, ancak dosyayı kaydedip tekrar kıvırdığınızda değişiklikleri görmeyeceksiniz. Nerede önbelleğe alındığını anlamıyorum ama önbelleğe alındı. Sunucuyu öldürmeli ve yeniden başlatmalısınız.

Sunucuyu yeniden başlatmak

  1. İşlem kimliğini bulun

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

    İşte 582ebeveyn kimliği - bunu kullanın.

    kill 582
    
  2. Sadece 1 saniye bekleyin ve ardından sunucuyu yeniden başlatın (yeni bir işlem kimliği alacaksınız!). Aynı komutla kıvırma artık size güncellenmiş sayfayı verecektir.


Aslında bir bağlantı noktasını iletebilir ve bunun yerine tarayıcınızı kullanabilirsiniz curl.
x-yuri

5

Heroku'da bir dosyayı düzenlemek için acil bir alternatif:

  1. bir kopyasını uzaktaki bir ana bilgisayara yerleştirin. Gist'i kullanmayı seviyorum
  2. Gist'teki dosyayı düzenleyin ve bittiğinde ham URL'yi ona alın
  3. wget Heroku bashınızdaki ham URL
  4. getirilen dosyayı orijinal dosyanın yoluna kopyala

Eklentiye gerek olmadığı için bu çözümü tek seferlik ihtiyaç için mükemmel buluyorum.
Stéphane

2

Nano veya Vim kullanarak Heroku Dynos'ta Dosya Nasıl Düzenlenir hakkında eksiksiz bir makale yazdım , ancak temelde:

  • Komut satırını kullanabilirsiniz:

    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 Eklentilerini kullanabilirsiniz: heroku-vim
  • Heroku Buildpack'leri kullanabilirsiniz: heroku-buildpack-vip

Umarım yardımcı olur!


Eklenti benim için işe yaramadı: vim: error while loading shared libraries: libXt.so.6: cannot open shared object file: No such file or directory. Ancak yapı paketi işe yaradı.
x-yuri

2

Yalnızca dosyanın içeriğini görüntülemek istiyorsanız, o zaman:

  1. dosyanın bulunduğu klasöre cd, örn. $ cd folder
  2. cat command + dosya adını çalıştır, örneğin $ cat filename.csv


0

alternatif yol, sunucunuz php çalıştırıyorsa, PHP Dosya Yöneticisini yüklemekse, tek dosyadır ve buradan indirebilirsiniz.

http://phpfm.sourceforge.net/


0

Bir dinamodaki dosyaları değiştirebilir ve Heroku'ya göndermeden sonucu görebilir:

  1. heroku-buildpack-vimBuildpack'i yükleyin :

    $ heroku buildpacks:add \
    https://github.com/carloluis/heroku-buildpack-vim
    
  2. Dyno'ya Ssh:

    $ heroku ps:exec
    
  3. Start.sh oluşturun ve çalıştırın:

    #!/usr/bin/env bash
    set -eu
    export DATABASE_URL=...
    bin/rails s -p 4000
    
  4. İleri bağlantı noktası 4000 (ikinci konsol):

    $ heroku ps:forward
    
  5. localhost:4000Tarayıcınızda açın .

  6. Durun start.sh, bir dosyayı değiştirin, yeniden başlayın, tarayıcı sayfasını yenileyin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.