Ruby Language
Befehlszeilen-Apps
Suche…
Wie man ein Befehlszeilentool schreibt, um das Wetter anhand der Postleitzahl zu ermitteln
Dies ist ein relativ umfangreiches Tutorial, in dem beschrieben wird, wie ein Befehlszeilentool geschrieben wird, um das Wetter aus der Postleitzahl des Befehlszeilentools zu drucken. Der erste Schritt besteht darin, das Programm in Ruby zu schreiben, um diese Aktion auszuführen. Beginnen wir mit dem Schreiben einer Methode weather(zip_code)
(Diese Methode erfordert den Edelstein yahoo_weatherman
. Wenn Sie diesen Edelstein nicht haben, können Sie ihn installieren, indem gem install yahoo_weatherman
in der Befehlszeile gem install yahoo_weatherman
)
require 'yahoo_weatherman'
def weather(zip_code)
client = Weatherman::Client.new
client.lookup_by_location(zip_code).condition['temp']
end
Wir haben jetzt eine sehr grundlegende Methode, die das Wetter angibt, wenn eine Postleitzahl angegeben wird. Jetzt müssen wir daraus ein Befehlszeilentool machen. Gehen wir sehr schnell darauf ein, wie ein Befehlszeilentool von der Shell und den zugehörigen Variablen aufgerufen wird. Wenn ein Werkzeug wie dieses tool argument other_argument
, gibt es in ruby eine Variable ARGV
die ein Array ist, das gleich ['argument', 'other_argument']
. Lassen Sie uns dies nun in unserer Anwendung implementieren
#!/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])
Gut! Jetzt haben wir eine Befehlszeilenanwendung, die ausgeführt werden kann. Beachten Sie die Bindestrichlinie am Anfang der Datei ( #!/usr/bin/ruby
). Dadurch kann die Datei zu einer ausführbaren Datei werden. Wir können diese Datei als weather
speichern. ( Hinweis : Speichern Sie dies nicht als " weather.rb
Die Dateierweiterung ist nicht erforderlich, und das She-Bang teilt Ihnen mit, was Sie benötigen, um anzugeben, dass es sich um eine Ruby-Datei handelt.) Jetzt können wir diese Befehle in der Shell ausführen (geben Sie nicht $
).
$ chmod a+x weather
$ ./weather [ZIPCODE]
Nachdem wir getestet haben, dass dies funktioniert, können Sie dies jetzt mit /usr/bin/local/
verknüpfen, indem Sie diesen Befehl ausführen
$ sudo ln -s weather /usr/local/bin/weather
weather
kann jetzt über die Befehlszeile aufgerufen werden, unabhängig von dem Verzeichnis, in dem Sie sich befinden.