Rails генератор не удаляет вновь созданные папки при уничтожении

Я пишу генератор Rails, который собирается копировать файлы / папки из каталога шаблонов моего гема в каталог приложения. Это работает, как и ожидалось, когда я бегу rails generate mygem:install Однако, когда я пытаюсь повернуть его вспять, используя rails destroy mygem:install он не удаляет вновь созданные подпапки.

папка шаблонов

├── templates
│   ├── views
│   │   ├── about
│   │   │   ├── index.html.erb
│   │   ├── contact
│   │   │   ├── index.html.erb 

папка приложения (после создания)

├── app
│   ├── views
│   │   ├── about
│   │   │   ├── index.html.erb
│   │   ├── contact
│   │   │   ├── index.html.erb 

папка приложения (после уничтожения)

├── app
│   ├── views
│   │   ├── about
│   │   ├── contact

желаемый результат

├── app
│   ├── views

генератор моего драгоценного камня

module Mygem
  module Generators
    class InstallGenerator < Rails::Generators::Base

      source_root File.expand_path('../templates', __FILE__)

      def copy_templates
        templates = Dir.glob("#{source_paths[0]}/*")
        directory(templates[0], "app/views/")
      end

    end
  end
end

0 ответов

Я столкнулся с той же проблемой - исправил, добавив следующее в мой файл generator.rb

def clean_up
  case self.behavior
    when :revoke then `rm -rf path/to/directory/`
  end
end

У вас также есть :invoke возможность указать действия, которые происходят только при генерации:

case self.behavior
  when :invoke then do_something
end

так

# something_generator.rb

def generate_directory
  case self.behavior
  when :invoke
    `mkdir path/to/directory`
  when :revoke
    `rm -rf path/to/directory`
  end
end
Другие вопросы по тегам