Rails генератор не удаляет вновь созданные папки при уничтожении - PullRequest
0 голосов
/ 18 октября 2018

Я пишу генератор 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

1 Ответ

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

Я столкнулся с той же проблемой - исправил, добавив следующее в мой файл 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
...