我正在编写一个Rails生成器,它将把我的gem的模板目录中的文件/文件夹复制到该应用程序的目录中。运行rails generate mygem:install
时,它可以按预期工作,但是当我尝试使用rails destroy mygem:install
进行反向操作时,它不会删除新创建的子文件夹。
模板文件夹
├── templates
│ ├── views
│ │ ├── about
│ │ │ ├── index.html.erb
│ │ ├── contact
│ │ │ ├── index.html.erb
app文件夹(生成后)
├── 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 :(得分: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