Как передать stdout по каналу из отличного метода в строку

После некоторых исследований по этой теме я обнаружил, что ошибка возникает в основном, если у вас есть экземпляр db, созданный ранее на вашем локальном SQL-сервере express. Поэтому всякий раз, когда вы обновляете db и пытаетесь обновить db / run некоторый код на db, не выполнив команду Update Database, используя Package Manager Console; Прежде всего, вы должны удалить предыдущий db на нашем локальном SQL-Express вручную.

Кроме того, это решение работает, если у вас нет AutomaticMigrationsEnabled = false; в вашей конфигурации.

Если вы работаете с системой управления версиями (git, svn и т. д.), а некоторые другие разработчики обновляют объекты db на этапе производства, эта ошибка возрастает всякий раз, когда вы обновляете свою базу кода и запускаете приложение.

Как указано выше, для кода на основе кода есть некоторые решения. Однако в некоторых случаях это наиболее практично.

8
задан Opal 16 November 2017 в 19:37
поделиться

2 ответа

Это демонстрирует, как можно сделать это. Вставьте это в файл сценария Groovy и выполните его. Вы будете видеть, что первое вызывает функции как нормальные. Второй вызов не приводит ни к каким результатам. Наконец, последний шаг в основной печати результаты второго вызова, которые были перенаправлены к ByteArrayOutputStream.

Развлекайтесь!

void doSomething() {
  println "i did something"
}

println "normal call\n---------------"
doSomething()
println ""

def buf = new ByteArrayOutputStream()
def newOut = new PrintStream(buf)
def saveOut = System.out

println "redirected call\n---------------"
System.out = newOut
doSomething()
System.out = saveOut
println ""

println "results of call\n---------------"
println buf.toString()
11
ответ дан 5 December 2019 в 14:07
поделиться

Я не уверен, что Вы подразумеваете "под добавлением вывода к строке", но можно распечатать к стандарту с помощью "печати" или "println".

1
ответ дан 5 December 2019 в 14:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: