Поиск…


Как написать инструмент командной строки для получения погоды по почтовому индексу

Это будет относительно всеобъемлющее руководство по написанию инструмента командной строки для печати погоды из почтового индекса, предоставленного инструменту командной строки. Первый шаг - написать программу в рубине для выполнения этого действия. Начнем с написания метода 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 может вызываться в командной строке независимо от того, в каком каталоге вы находитесь.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow