Можно ли редактировать файл .erb прямо из консоли Heroku?

Мне интересно, возможно ли это из-за контроля версий. Но мне было интересно, есть ли способ напрямую просмотреть код в файле .html.erb и отредактировать его, чтобы внести небольшое изменение в опечатку, без повторного развертывания всего приложения.

Я открыл консоль Heroku, набрал Dir.chdir "app/views/pages". Это приводит меня к нужной папке в каталоге.

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

Затем я могу сделать Dir.glob("*.erb"), чтобы увидеть список всех файлов в этом каталоге с этим расширением.

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"]

Теперь то, что я хочу сделать, похоже на то, что вы можете сделать в процессе разработки, чтобы изменить учетные данные nano rails credentials:edit. Но выполнение nano rails home.html.erb:edit или nano rails home:edit не работает. Вот результат со всеми различными способами, которые я пробовал:

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

Это вообще возможно? Или из-за контроля версий это не разрешено, и вам нужно сделать это локально, зафиксировать в git, а затем нажать git master, чтобы внести изменения? Интересно, потому что было бы неплохо сделать быстрое редактирование, не выполняя все эти другие шаги. И без необходимости делать страницу динамической и хранить информацию в таблице для редактирования в браузере.

Спасибо за ваши идеи.


person Christopher Warrington    schedule 26.06.2020    source источник


Ответы (1)


Во-первых (в сторону для справки в будущем), вы, похоже, обращаетесь с консолью, как с оболочкой bash, но heroku console просто запускает консоль Rails. Таким образом, такие вещи, как nano rails..., не работают, потому что они недействительны для ruby. Запуск heroku run bash запустит одноразовый динамометр и даст вам оболочку bash.

Чтобы ответить на ваш главный вопрос, отправка ветки git — это способ вытолкнуть ваши изменения. Есть пара вещей, которые нужно понять о Heroku, которые помогают объяснить, почему:

  1. Когда вы запускаете heroku run bash, Heroku запускает отдельный одноразовый динамометр для этого сеанса с копией файловой структуры вашего приложения. Это отлично подходит для устранения неполадок, но на самом деле это никак не связывает вас с динамометром, на котором запущено ваше приложение. Поэтому, если вы отредактируете там файл, это не повлияет на работающий код приложения.
  2. Когда вы отправляете образ в Heroku, он создает предварительно упакованный образ вашего приложения, называемый slug. Всякий раз, когда вы перезапускаете свое приложение, оно перезагружается из этих слагов, поэтому, даже если вы использовали хак для подключения к работающему динамометру и изменили файл, это продлится только до следующего перезапуска приложения.
person rmlockerd    schedule 26.06.2020
comment
Спасибо за очень лаконичный ответ. ... тогда мне просто нужно будет внести эти небольшие изменения отдельно и подтолкнуть их. Недурно ~ Удачного кодирования! - person Christopher Warrington; 27.06.2020