Ruby Language Comment écrire un outil en ligne de commande pour obtenir la météo par code postal


Exemple

Ce sera un tutoriel relativement complet sur la façon d'écrire un outil de ligne de commande pour imprimer la météo à partir du code postal fourni avec l'outil de ligne de commande. La première étape consiste à écrire le programme en ruby ​​pour effectuer cette action. Commençons par écrire une méthode weather(zip_code) (cette méthode nécessite le gem yahoo_weatherman . Si vous ne possédez pas cette gem, vous pouvez l'installer en tapant gem install yahoo_weatherman partir de la ligne de commande)

require 'yahoo_weatherman'

def weather(zip_code)
  client = Weatherman::Client.new
  client.lookup_by_location(zip_code).condition['temp']
end

Nous avons maintenant une méthode très basique qui donne la météo lorsqu'un code postal lui est fourni. Maintenant, nous devons en faire un outil de ligne de commande. Très rapidement, voyons comment un outil en ligne de commande est appelé depuis le shell et les variables associées. Lorsqu'un outil est appelé comme cet tool argument other_argument , dans ruby ​​il y a une variable ARGV qui est un tableau égal à ['argument', 'other_argument'] . Maintenant, laissez-nous implémenter cela dans notre application

#!/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])

Bien! Nous avons maintenant une application en ligne de commande qui peut être exécutée. Remarquez la ligne she-bang au début du fichier ( #!/usr/bin/ruby ). Cela permet au fichier de devenir un exécutable. Nous pouvons enregistrer ce fichier comme weather . ( Remarque : ne sauvegardez pas ceci comme weather.rb , il n'y a pas besoin de l'extension de fichier et le she-bang indique ce que vous avez besoin de dire qu'il s'agit d'un fichier ruby). Maintenant, nous pouvons exécuter ces commandes dans le shell (ne tapez pas le $ ).

$ chmod a+x weather
$ ./weather [ZIPCODE]

Après avoir testé que cela fonctionne, nous pouvons maintenant créer un lien symétrique avec /usr/bin/local/ en exécutant cette commande

$ sudo ln -s weather /usr/local/bin/weather

Maintenant, le weather peut être appelé sur la ligne de commande, quel que soit le répertoire dans lequel vous vous trouvez.