Ruby Language
Приложения командной строки
Поиск…
Как написать инструмент командной строки для получения погоды по почтовому индексу
Это будет относительно всеобъемлющее руководство по написанию инструмента командной строки для печати погоды из почтового индекса, предоставленного инструменту командной строки. Первый шаг - написать программу в рубине для выполнения этого действия. Начнем с написания метода weather(zip_code)
(для этого метода требуется жемчужина yahoo_weatherman
. Если у вас нет этого драгоценного камня, вы можете установить его, набрав gem install yahoo_weatherman
из командной строки)
require 'yahoo_weatherman'
def weather(zip_code)
client = Weatherman::Client.new
client.lookup_by_location(zip_code).condition['temp']
end
Теперь у нас есть очень простой метод, который дает погоду, когда ему предоставляется почтовый индекс. Теперь нам нужно сделать это инструментом командной строки. Очень быстро перейдем к тому, как вызывается инструмент командной строки из оболочки и связанных с ней переменных. Когда инструмент вызывается как этот tool argument other_argument
, в ruby есть переменная ARGV
которая представляет собой массив, равный ['argument', 'other_argument']
. Теперь давайте реализовать это в нашем приложении
#!/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])
Хорошо! Теперь у нас есть приложение командной строки, которое можно запустить. Обратите внимание на строку she-bang в начале файла ( #!/usr/bin/ruby
). Это позволяет файлу стать исполняемым. Мы можем сохранить этот файл как weather
. ( Примечание . Не сохраняйте это как weather.rb
, нет необходимости в расширении файла, и she-bang сообщает, что вам нужно сказать, что это рубиновый файл). Теперь мы можем запускать эти команды в оболочке (не вводите $
).
$ chmod a+x weather
$ ./weather [ZIPCODE]
После тестирования, что это работает, мы теперь можем связать это с /usr/bin/local/
, выполнив эту команду
$ sudo ln -s weather /usr/local/bin/weather
Теперь weather
может вызываться в командной строке независимо от того, в каком каталоге вы находитесь.