2011-07-03 8 views
5

Czy jest możliwe utworzenie pliku Ruby w języku Rub, który akceptuje przestrzenie nazw? Aby umożliwić, na przykład, następujące z linii poleceń: ./thorfile greet:formalPlik wykonywalny Ruby Thor z przestrzeniami nazw

Biorąc Mam następujący thorfile:

#!/usr/bin/env ruby 

require 'rubygems' 
require 'thor' 

class TalkTasks < Thor 
    namespace  "talk" 

    desc  "greet", "says hello" 
    def greet 
    puts "Hello!" 
    end 

    class Formal < Thor 
    namespace "talk:formal" 

    desc "greet", "says a formal hello" 
    def greet 
     puts "Good evening!" 
    end 
    end 

end 

TalkTasks.start 

Ten thorfile udostępnia następujące zadania (thor -T):

thor talk:formal:greet # says a formal hello 
thor talk:greet   # says hello 

mogę również użyj thorfile bezpośrednio jako plik wykonywalny:

./thorfile greet 

Która wyświetla:

Witam!

Jak mogę uzyskać ./thorfile formal:greet (lub coś podobnego), aby wykonać metodę powitalną w formalnym klasie, w celu wyświetlania:

Dobry wieczór!

+0

Spójrz na to odpowiedź: http://stackoverflow.com/questions/5663519/namespacing-thor-commands-in-a-standalone-ruby-executable –

Odpowiedz

0

Zmiana nazw dla Formal klasy

class Formal < Thor 
    namespace "formal" 
    ... 
end 

masz zagnieżdżone klasy tak gnieździe katalogów. Jeśli je rozdzielisz, nie będziesz mógł go przetestować. Powinno działać.