Ruby Language
Aplikacje wiersza poleceń
Szukaj…
Jak napisać narzędzie wiersza polecenia, aby uzyskać pogodę według kodu pocztowego
Będzie to stosunkowo obszerny samouczek, jak napisać narzędzie wiersza polecenia, aby wydrukować pogodę z kodu pocztowego dostarczonego do narzędzia wiersza polecenia. Pierwszym krokiem jest napisanie programu w języku ruby, aby wykonać tę akcję. Zacznijmy od napisania metody weather(zip_code)
(Ta metoda wymaga klejnotu yahoo_weatherman
. Jeśli nie masz tego klejnotu, możesz go zainstalować, wpisując gem install yahoo_weatherman
z wiersza poleceń)
require 'yahoo_weatherman'
def weather(zip_code)
client = Weatherman::Client.new
client.lookup_by_location(zip_code).condition['temp']
end
Mamy teraz bardzo podstawową metodę, która podaje pogodę, gdy podany zostanie kod pocztowy. Teraz musimy przekształcić to w narzędzie wiersza poleceń. Bardzo szybko przyjrzyjmy się, jak narzędzie wiersza poleceń jest wywoływane z powłoki i powiązanych zmiennych. Kiedy narzędzie jest wywoływane jak ten tool argument other_argument
, w ruby znajduje się zmienna ARGV
która jest tablicą równą ['argument', 'other_argument']
. Teraz zaimplementujmy to w naszej aplikacji
#!/usr/bin/ruby
require 'yahoo_weatherman'
def weather(zip_code)
client = Weatherman::Client.new
client.lookup_by_location(zip_code).condition['temp']
end
puts weather(ARGV[0])
Dobry! Teraz mamy aplikację wiersza poleceń, którą można uruchomić. Zwróć uwagę na linię she-bang na początku pliku ( #!/usr/bin/ruby
). Dzięki temu plik staje się plikiem wykonywalnym. Możemy zapisać ten plik jako weather
. ( Uwaga : nie zapisuj tego jako weather.rb
, rozszerzenie pliku nie jest potrzebne, a she-bang mówi cokolwiek musisz powiedzieć, że jest to plik ruby). Teraz możemy uruchomić te polecenia w powłoce (nie wpisuj $
).
$ chmod a+x weather
$ ./weather [ZIPCODE]
Po przetestowaniu, czy to działa, możemy teraz połączyć to z /usr/bin/local/
, uruchamiając to polecenie
$ sudo ln -s weather /usr/local/bin/weather
Teraz weather
można wywoływać z wiersza poleceń bez względu na katalog, w którym się znajdujesz.