Size: a a a

Saint P Ruby Community

2021 January 29

w

wi11son in Saint P Ruby Community
одна из главных штук, которую я сделал, когда начал — это именно добавил возможность юнит-тестирования, что позволило писать спек много, и разных, оригинально было только интеграционно, потому что куча всего прокидывалось неочевидно
источник

CM

Cucumba Morozov in Saint P Ruby Community
в торе tty-prompt интегрирован, судя по всему. вижу yes?(“тебе весело?”) в коде и прочие методы из tty-prompt
источник

CM

Cucumba Morozov in Saint P Ruby Community
wi11son
одна из главных штук, которую я сделал, когда начал — это именно добавил возможность юнит-тестирования, что позволило писать спек много, и разных, оригинально было только интеграционно, потому что куча всего прокидывалось неочевидно
кайф!
источник

w

wi11son in Saint P Ruby Community
Cucumba Morozov
я думаю, лучше экстеншном загружаемым это реализовывать

почему tty-prompt — это простой и довольно топорный способ спросить у пользователя какую-то доп. инфу в интерактивном промпте

это нужно не всем, поэтому это лучше тащить как extension, а не прямую зависимость
а может у тебя даже есть идеи о том, как это могло бы выглядеть? я имею ввиду в плане DSL?
источник

w

wi11son in Saint P Ruby Community
потому что в tty много красивых штук есть, их явно не две
источник

CM

Cucumba Morozov in Saint P Ruby Community
Я у себя сделал просто топорную интеграцию:

module TTYTools
   def prompt
     @prompt ||= TTY::Prompt.new
   end
 end


потом просто инклудю этот модуль. Юзаю так:

class
 Cmd < Dry::CLI::Command 
 include TTYTools

 def call(**)
   prompt.say(“Howdy, partner”)
 
   bake_cookies = prompt.yes?(“Should we bake cookies?”)
 end
end

как
я бы это улучшил:

сделал экстеншн и загружал его через

Dry::CLI.load_extensions(:tty_prompt)

и ком
анда выглядела бы так:


class Cmd < Dry::CLI::Command
 def call(**)
   prompt.say(“Howdy, partner”)
 
   bake_cookies = prompt.yes?(“Should we bake cookies?”)
 end
end
источник

CM

Cucumba Morozov in Saint P Ruby Community
можно сделать как Thor и сделать say/yes?/т.п. напрямую, без обращения к prompt, но я не думаю, что это нужно
источник

w

wi11son in Saint P Ruby Community
хм, тогда и файловые манипуляции (типа те самые шаблоны, что ты говорил выше) можно было бы тоже  запихнуть в экстеншн
источник

CM

Cucumba Morozov in Saint P Ruby Community
Я как заметил, что out не пробрасывается — я хотел его в TTY::Prompt пробросить, чтоб в нужный стрим писать всегда)
источник

CM

Cucumba Morozov in Saint P Ruby Community
wi11son
хм, тогда и файловые манипуляции (типа те самые шаблоны, что ты говорил выше) можно было бы тоже  запихнуть в экстеншн
ага!
источник

w

wi11son in Saint P Ruby Community
у меня там накопилось несколько долгов по кли, все руки не доходят целый год, может таки продолжу
источник

СН

Смерть Неизбежна... in Saint P Ruby Community
Это корпоративные цены. Персональные дешевле
источник

АД

Антон Дьячук... in Saint P Ruby Community
Смерть Неизбежна
Это корпоративные цены. Персональные дешевле
Не уточнялось...
источник

AD

Anton Davydov in Saint P Ruby Community
Cucumba Morozov
я думаю, лучше экстеншном загружаемым это реализовывать

почему tty-prompt — это простой и довольно топорный способ спросить у пользователя какую-то доп. инфу в интерактивном промпте

это нужно не всем, поэтому это лучше тащить как extension, а не прямую зависимость
Так что мешает его самому прикрутить руками? Там же быстро все делается
источник

CM

Cucumba Morozov in Saint P Ruby Community
так я ж и написал, что я его прикрутил
источник

CM

Cucumba Morozov in Saint P Ruby Community
даже свой кот скинул
источник

AD

Anton Davydov in Saint P Ruby Community
Cucumba Morozov
Я у себя сделал просто топорную интеграцию:

module TTYTools
   def prompt
     @prompt ||= TTY::Prompt.new
   end
 end


потом просто инклудю этот модуль. Юзаю так:

class
 Cmd < Dry::CLI::Command 
 include TTYTools

 def call(**)
   prompt.say(“Howdy, partner”)
 
   bake_cookies = prompt.yes?(“Should we bake cookies?”)
 end
end

как
я бы это улучшил:

сделал экстеншн и загружал его через

Dry::CLI.load_extensions(:tty_prompt)

и ком
анда выглядела бы так:


class Cmd < Dry::CLI::Command
 def call(**)
   prompt.say(“Howdy, partner”)
 
   bake_cookies = prompt.yes?(“Should we bake cookies?”)
 end
end
А, все, понял что хочешь
источник

CM

Cucumba Morozov in Saint P Ruby Community
другое дело, что с такими библиотеками хочется чего-то стандартного, чтоб мартышьим мозгом можно было взять и сделать по инструкции
источник

AD

Anton Davydov in Saint P Ruby Community
wi11son
хм, тогда и файловые манипуляции (типа те самые шаблоны, что ты говорил выше) можно было бы тоже  запихнуть в экстеншн
Хорошая идея кстати
источник

AD

Anton Davydov in Saint P Ruby Community
Cucumba Morozov
другое дело, что с такими библиотеками хочется чего-то стандартного, чтоб мартышьим мозгом можно было взять и сделать по инструкции
источник