2017-01-31 3 views
1

У меня есть в моем рецепте этот блок:повар рецепт - not_if с SQL результат запроса

bash "Create admin database tables" do 
    code "mysql -u root -D admindb < /vagrant/files/admin.sql" 
    not_if shell_out("mysql -u root -s --skip-column-names -e 'SELECT COUNT(DISTINCT table_name)>0 FROM information_schema.columns WHERE table_schema = \"admindb\";'").stdout().chomp() 
end 

Результат выбора запроса является 0 или 1 на стандартный вывод (не более того). Я бы хотел запустить только команду оболочки, если результатом запроса будет 0. Как я могу это достичь?

ответ

2

Вам нужно всего лишь использовать оператор равенства Ruby внутри блока. Так как вы сказали, «только если» выход 0, было бы проще сделать это с only_if, а не not_if:

only_if { shell_out("mysql -u root -s --skip-column-names -e 'SELECT COUNT(DISTINCT table_name)>0 FROM information_schema.columns WHERE table_schema = \"admindb\";'").stdout.chomp == '0' } 
+0

Спасибо, отлично работает. –

Смежные вопросы