Bisakah Anda mengedit file .erb langsung dari Konsol Heroku?

Saya bertanya-tanya apakah ini tidak mungkin karena kontrol versi. Namun, saya bertanya-tanya apakah ada cara untuk langsung melihat kode dalam file .html.erb dan mengeditnya untuk membuat perubahan kecil pada kesalahan ketik, tanpa harus menerapkan ulang seluruh aplikasi.

Saya telah membuka konsol Heroku, mengetik Dir.chdir "app/views/pages". Itu membawa saya ke folder yang tepat di direktori.

√ _testApps/[app_name] % heroku console  
irb(main):001:0> Dir.chdir "app/views/pages"
=> 0

Saya kemudian dapat melakukan Dir.glob("*.erb") untuk melihat daftar semua file di direktori itu dengan ekstensi itu.

irb(main):002:0> Dir.glob("*.erb")
=> ["sitemap.html.erb", "about.html.erb", "home.html.erb", "guide.html.erb", 
"media_kit.html.erb", "social.html.erb", "terms_of_use.html.erb", "aids.html.erb", 
"expectations.html.erb", "faq.html.erb", "privacy_policy.html.erb", "contact_us.html.erb"]

Sekarang, yang ingin saya lakukan adalah sesuatu seperti apa yang dapat Anda lakukan dalam pengembangan untuk mengubah kredensial nano rails credentials:edit. Namun, melakukan nano rails home.html.erb:edit atau nano rails home:edit tidak berhasil. Berikut adalah output dari berbagai cara yang saya coba:

irb(main):003:0> nano rails home.html.erb:edit
Traceback (most recent call last):
    1: from (irb):3
NameError (undefined local variable or method `home' for main:Object)

irb(main):004:0> nano rails home:edit
Traceback (most recent call last):
    2: from (irb):3
    1: from (irb):4:in `rescue in irb_binding'
NameError (undefined local variable or method `edit' for main:Object)
Did you mean?  exit

irb(main):005:0> nano home:edit
Traceback (most recent call last):
    2: from (irb):4
    1: from (irb):5:in `rescue in irb_binding'
NameError (undefined local variable or method `edit' for main:Object)
Did you mean?  exit 

irb(main):006:0> home:edit
Traceback (most recent call last):
    2: from (irb):5
    1: from (irb):6:in `rescue in irb_binding'
NoMethodError (undefined method `home' for main:Object)

irb(main):007:0> home.html.erb:edit
Traceback (most recent call last):
    2: from (irb):6
    1: from (irb):7:in `rescue in irb_binding'
NameError (undefined local variable or method `home' for main:Object)

irb(main):008:0> edit home.html.erb
Traceback (most recent call last):
    2: from (irb):7
    1: from (irb):8:in `rescue in irb_binding'
NameError (undefined local variable or method `home' for main:Object)

irb(main):009:0> edit home
Traceback (most recent call last):
    2: from (irb):8
    1: from (irb):9:in `rescue in irb_binding'
NameError (undefined local variable or method `home' for main:Object)

irb(main):010:0> edit "home.html.erb"
Traceback (most recent call last):
    2: from (irb):9
    1: from (irb):10:in `rescue in irb_binding'
NoMethodError (undefined method `edit' for main:Object)
Did you mean?  exit

Apakah ini mungkin? Atau karena kontrol versi tidak diperbolehkan, dan Anda harus melakukannya secara lokal, komit ke git lalu tekan git master untuk melakukan perubahan? Bertanya-tanya karena alangkah baiknya melakukan pengeditan cepat tanpa harus melalui semua langkah lainnya. Dan tanpa harus membuat halaman menjadi dinamis dan menyimpan informasi dalam tabel untuk diedit di browser.

Terima kasih atas pemaparan anda.


person Christopher Warrington    schedule 26.06.2020    source sumber


Jawaban (1)


Pertama (selain untuk referensi di masa mendatang), Anda tampaknya memperlakukan konsol seperti itu adalah bash shell, tetapi heroku console hanya memutar konsol Rails. Jadi, hal-hal seperti nano rails... tidak berfungsi karena itu bukan rubi yang valid. Menjalankan heroku run bash akan menjalankan dyno satu kali dan memberi Anda bash shell.

Untuk menjawab pertanyaan utama Anda, mendorong cabang git adalah cara untuk mendorong perubahan Anda. Ada beberapa hal yang perlu dipahami tentang Heroku yang membantu menjelaskan alasannya:

  1. Saat Anda menjalankan heroku run bash, Heroku menjalankan dyno terpisah satu kali untuk sesi tersebut dengan salinan struktur file aplikasi Anda. Itu bagus untuk memecahkan masalah, tetapi itu tidak benar-benar menghubungkan Anda dengan dyno yang menjalankan aplikasi Anda. Jadi jika Anda mengedit file di sana, itu tidak berpengaruh pada kode aplikasi yang sedang berjalan.
  2. Saat Anda memasukkan gambar ke Heroku, itu akan membuat gambar aplikasi Anda yang sudah dikemas sebelumnya yang disebut slug. Setiap kali Anda memulai ulang aplikasi, aplikasi akan dimuat ulang dari slug tersebut, jadi meskipun Anda menggunakan peretasan untuk menyambung ke dyno yang sedang berjalan dan mengubah file, itu hanya akan bertahan hingga aplikasi dimulai ulang lagi.
person rmlockerd    schedule 26.06.2020
comment
Terima kasih atas jawaban yang sangat singkat itu. ... maka saya hanya perlu membuat perubahan kecil itu secara terpisah dan mendorongnya ke atas. Jempol ~ Selamat Coding! - person Christopher Warrington; 27.06.2020