O Thor é uma excelente biblioteca para quem quer criar geradores. Possui diversos métodos para criar e copiar arquivos e diretórios, alterar arquivos, criar links simbólicos, ler arquivos remotos, dentre outras ações. Ele é especialmente bom quando você quer criar uma gem que irá gerar uma estrutura de arquivos e diretórios, como o Ruby on Rails faz.

A primeira coisa a fazer é criar nossa classe que será um gerador.

require "thor"
require "thor/group"
 
class MyGem::Generator < Thor::Group
  include Thor::Actions
  desc "Generate a new filesystem structure "
end

A classe Thor::Group é perfeita para geradores, já que ela permite executar todas as ações de uma única vez. Para utilizar as ações do Thor, você só precisa incluir o módulo Thor::Actions.

Veja algumas das ações possíveis:

class MyGem::Generator < Thor::Group
  include Thor::Actions
  desc "Generate a new filesystem structure "
 
  def self.source_root
    File.dirname(__FILE__) + "/../../templates"
  end
 
  def create_config_file
    copy_file "config.yml", "config/mygem.yml"
  end
 
  def create_git_files
    copy_file "gitignore", ".gitignore"
    create_file "images/.gitkeep"
    create_file "text/.gitkeep"
  end
 
  def create_output_directory
    empty_directory "output"
  end
end

Note que o método MyGem::Generator.source_root define o diretório onde nossos arquivos de template estão localizados.

Agora, para executar nosso gerador, você só precisa instanciar a classe MyGem::Generator.

generator = MyGem::Generator.new
generator.destination_root = "/some/path"
generator.invoke_all

Perceba que estamos definindo o diretório de destino. Este é um método opcional, que usa o diretório atual como valor padrão.

Para saber mais sobre o Thor, acesse a documentação. Para ver a lista completa de ações disponíveis, veja a documentação de Thor::Actions.

Comentários #

Deixe um comentário





Não é aceito código HTML: adicione-o no pastie.org ou paste.milk-it.net e poste apenas o link.

Se este é seu primeiro comentário, ele terá que ser aprovado antes de ser exibido.

jQuery: Dominando o framework

Você quer aprender a usar jQuery de verdade? Então chegou a hora! Neste workshop você verá como funciona este framework de JavaScript, entendendo todos os aspectos que fazem do jQuery uma das melhores ferramentas para desenvolvimento de interfaces.

Saiba mais Fechar

Conheça também o HOWTO