Если Ваш regex язык поддерживает его, используйте отрицательный lookaround:
(?
Это будет соответствовать "нечто" или "панели", которой сразу не предшествуют или сопровождают "нечто" или "панель", которая я думаю, то, что Вы хотели.
не ясно из Вашего вопроса или примеров, если строка, которой Вы пытаетесь соответствовать, может содержать другие маркеры: "foocuzbar". Если так, этот шаблон не будет работать.
Вот результаты Ваших тестовых сценариев ("верный", означает, что шаблон был найден во входе):
foo: true
bar: true
foofoo: false
barfoo: false
foobarfoo: false
barbar: false
barfoofoo: false
Есть rake db: abort_if_pending_migrations
(по крайней мере, в Rails 2.3.3, не знаю, когда он был введен). В описании говорится: «Вызывает ошибку, если есть отложенные миграции». Кажется, это используется скорее как предварительное условие для других задач, но я предполагаю, что вы могли бы использовать его для своих целей.
РЕДАКТИРОВАТЬ: Вот пример вывода после того, как вы только что сгенерировали и не запустили «тестовую» миграцию
rails_project theIV$ rake db:abort_if_pending_migrations
(in /Users/theIV/Sites/rails_project/)
You have 1 pending migrations:
20090828200602 Test
Run "rake db:migrate" to update your database then try again.
Try rake -h (help) and have a look at rake -n (= rake --dry-run). So probably something like rake -n db:migrate should get you what you want.