protected function migrateUp($class)
    {
        if ($class === self::BASE_MIGRATION) {
            return true;
        }
        $this->messages[] = "*** applying $class";

        $start = microtime(true);
        $migration = $this->createMigration($class);
        ob_start();
        $result = $migration->up();
        $messages = ob_get_contents();
        ob_end_clean();
        $this->messages[] = $messages;
        // $this->messages = ArrayHelper::merge($this->messages, explode("\n", $messages));

        if ($result !== false) {
            $this->addMigrationHistory($class);
            $time = microtime(true) - $start;
            $this->messages[] = "*** applied $class (time: " . sprintf('%.3f', $time) . 's)';

            return true;
        } else {
            $time = microtime(true) - $start;
            $this->messages[] = "*** failed to apply $class (time: " . sprintf('%.3f', $time) . 's)';
            return false;
        }
    }