#bash #terminal #heroku
#bash #терминал #heroku
Вопрос:
Я помню, что была статья или несколько статей о том, как автор меняет цвет терминала с зеленого (для разработки) на красный (для производства) на основе адреса SSH.
Но я не уверен, как воспроизвести это с помощью Heroku console.
В идеале я хотел бы, чтобы он был, скажем, синим, когда я это делаю heroku console --remote staging
, а затем красным, когда я это делаю heroku console --remote production
.
У кого-нибудь есть предложения?
Комментарии:
1. Устанавливает ли Heroku что-либо (например, переменную env) при такой удаленной работе? (/ me ничего не знает о Heroku)
2. Да, я думаю, это можно было бы сделать через ENV VAR. Мысли?
Ответ №1:
В любой файл, загружаемый как часть производственной среды (скажем, config/environments/production.rb
), вы можете поместить:
if defined? IRB
# whew!
conf = IRB.conf[:PROMPT][IRB.conf[:PROMPT_MODE]]
red = "33[0;31m"
reset = "33[0m"
conf[:PROMPT_S] = "#{red}>> #{reset}" # regular prompt
end
Сумасшедшие escape-символы — это цветовые коды ANSI. "33"
— это escape-символ, а остальное — код для определенного цвета или эффекта. Вы можете найти список других цветов и эффектов здесь. Этот хэш IRB.conf является глобальным conf для IRB. Возможно, вы захотите установить на нем несколько других клавиш — они задокументированы здесь.
Если вы не используете Rails (и, следовательно, не обязательно имеете файл среды), вы всегда можете проверить текущую среду с помощью ENV['RACK_ENV']
, для которой должно быть установлено значение 'production'
на Heroku.
Комментарии:
1. Когда я пытаюсь это сделать, я получаю это сообщение:
'block in <top (required)>': undefined method '[]' for nil:NilClass (NoMethodError)
в этой строке:conf = IRB.conf[:PROMPT][IRB.conf[:PROMPT_MODE]]
Мысли?2. О, это странно, похоже, они не используют IRB, а скорее самодельный клиент, который, похоже, отправляет код ruby поверх REST. Я посмотрю, что возможно, если вообще возможно.
Ответ №2:
Я делаю это с помощью драгоценного камня Marco Polohttps://github.com/arches/marco-polo
Затем вы можете изменить приглашение консоли, установив конфигурационную переменную heroku MARCO_POLO_APP_NAME. Для изменения цвета можно воспользоваться escape-кодами. В моем случае я установил, что рабочее приглашение должно быть белым на пурпурном фоне (его трудно не заметить), используя эту управляющую последовательность для значения MARCO_POLO_APP_NAME
[ESC][105;97;1mPRODUCTION[ESC][0m
К сожалению, Stack Overflow не позволяет мне размещать сам escape-символ. Вам нужно будет использовать Notepad и выполнить поиск в регулярных выражениях и заменить, чтобы заменить [ESC] выше на x1B. Затем вы можете скопировать и вставить в значение MARCO_POLO_APP_NAME в консоли Heroku. Мне не удалось установить его в командной строке.
Ответ №3:
непроверено, но что-то вроде этого в вашем .bashrc или что-то еще может быть тем, что вы хотите (это не совсем безопасно, но вы должны понять идею)
function heroku {
REMOTE_TERMINAL_THEME_NAME="Solarized Light"
CURTAB=$(osascript -e "tell application "Terminal" to get the selected tab of the front window")
CURTHEME=$(osascript -e "tell application "Terminal" to get the name of current settings of the selected tab of the front window")
HEROKU=$(which heroku)
osascript -e "tell application "Terminal" to set current settings of $CURTAB to settings set "$REMOTE_TERMINAL_THEME_NAME""
$HEROKU "$@"
osascript -e "tell application "Terminal" to set current settings of $CURTAB to settings set "$CURTHEME""
}
Я использую его для ssh, но концептуально это то же самое: переопределите вашу команду функцией, которая использует osascript для изменения настроек терминала, затем измените их обратно при выходе. Переключение на основе аргументов должно быть относительно простым в добавлении.
Ответ №4:
Вы могли бы автоматизировать это с помощью bash или batch при вводе псевдонимов, на мой взгляд, одна из лучших возможностей для разработки cli / терминала. Где-то есть статья, в которой простая команда echo может изменить ваш цвет, пока вы не установите его обратно с помощью другого echo.
Итак, вы могли бы сделать это с вашим bashrc, если вы пользователь nix.
#pretend this is a bunch of prompt setup
#USER ALIASES
alias heroku-staging="export PS1="e[0;34m[Heroku Staging]$]" amp;amp; heroku console --remote staging"
Затем просто введите heroku-staging