Теперь в macOS по умолчанию используется zsh, что означает, что эта проблема возникает довольно часто.
В zsh:
% bin/rake plugin:spec[discourse-solved]
zsh: no matches found: plugin:spec[discourse-solved]
Почему это происходит?
Это связано с тем, что квадратные скобки интерпретируются как шаблон подстановки. В bash, если шаблон не находит совпадений, команда всё равно выполняется и работает. В отличие от этого, zsh выдаёт ошибку и не выполняет rake.
Для наглядности, в bash:
○ → echo bin/rake plugin:spec[discourse-solved]
bin/rake plugin:spec[discourse-solved]
○ → touch plugin:specd
○ → echo bin/rake plugin:spec[discourse-solved]
bin/rake plugin:specd
Вы можете воспроизвести поведение zsh, включив опцию failglob в bash:
○ → echo bin/rake plugin:spec[discourse-solved]
bin/rake plugin:spec[discourse-solved]
○ → shopt -s failglob
○ → echo bin/rake plugin:spec[discourse-solved]
bash: no match: plugin:spec[discourse-solved]
(спасибо @j.jaffeux и @pmusaraj за указание верного направления, а также @supermathie за примеры для bash
)
Чтобы всё работало как ожидается, необходимо заключить весь аргумент для rake в кавычки
% bin/rake "plugin:spec[discourse-solved]"