строка сравнения кукол в шаблоне erb - PullRequest
0 голосов
/ 31 января 2019

У нас есть версия куклы 3.8.7.У меня есть фейтер, который возвращает версию dovecot: 2.2 или 2.3.В шаблоне erb у меня есть следующая конструкция:

# SSL/TLS protocols to use
111 <% if @dovecot_version =~ "2.2" -%>
112 ssl_protocols = !SSLv2 !SSLv3
113 
114 # Diffie-Hellman parameters length
115 ssl_dh_parameters_length = 2048
116 <% else -%>
117 ssl_min_protocol = SSLv3
118 
119 # Diffie-Hellman parameters length
120 #ssl_dh_parameters_length = 2048
121 <% end -%>    

После применения я вижу следующее сообщение об ошибке:

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Failed to parse template cpanel/dovecot.conf.erb:
  Filepath: org/jruby/RubyString.java
  Line: 1730
  Detail: type mismatch: String given
at /etc/puppet/environments/testing/modules/cpanel/manifests/dovecot.pp:34 on node server1.development.local
Warning: Not using cache on failed catalog
Error: Could not retrieve catalog; skipping run

Что не так с типом переменной?Как я могу сравнить строки?Спасибо за ваш ответ

1 Ответ

0 голосов
/ 31 января 2019

Оператор Ruby =~ предназначен для сопоставления строк с регулярными выражениями.Операнды могут появляться в любом порядке, но нужно быть регулярным выражением.В вашем случае оба являются строками.

Чтобы сравнить строки на равенство, используйте обычный оператор == или !=.

...