А вот в linux... скажем, в Fedora 24 мне понадобилась следующая несложная последовательность действий, потребовавших совсем немного времени; возможна инсталляция Ruby on Rails from RubyGems.org:
$ sudo dnf group install "C Development Tools and Libraries"
$ sudo dnf install ruby-devel libxml2-devel
$ gem install rails
так и из официальных репозиториев Fedora:
$ sudo dnf install rubygem-{rails,sqlite3,coffee-rails,sass-rails,uglifier,jquery-rails,turbolinks,jbuilder,sdoc,spring,byebug,web-console} nodejs
Что дальше? - а дальше еще проще. Заходим в каталог, предназначенный нами для работы; например, это rails; после чего:
$ rails new demo
$ cd demo
$ rails server
Ну и вот; запустив web-сервер и перейдя в каталог demo, многочисленное содержимое которого можно теперь тщательно и не торопясь рассмотреть - начинаем думать, что бы такое для начала общественно-полезное с вами сделать? - я предлагаю быстрехонько сваять на рельсах погодный информер, вытаскивающий для заданной геолокации погоду с World Weather Online, благо про работу с API World Weather Online уже немало рассказывалось на страницах этого блога, и повторяться не придется... итак - нам осталось, по сути, создать лишь соответствующий контроллер и имя действия, предназначенного для поддержки этого самого контроллера (пусть будет, например, актуальное состояние погоды для Питера):
$ rails generate controller Informer spb
Сделали? - да, это было очень недолго и несложно. И вот теперь - открываем файл spb.html.erb , который приводим к следующему (например) виду:
demo/app/views/informer/spb.html.erb
<h2>St.Petersburg weather</h2>
<div style="float:left; width:30%; height:auto">
<%=image_tag @data.css("current_condition").css("weatherIconUrl").text %>
</div>
<table width="30%">
<tr>
<th>Coordinates</th>
<td>
<%=@data.css("query").text %>
</td>
</tr>
<tr>
<th>Temperature Celsius</th>
<td>
<%=@data.css("current_condition").css("temp_C").text %> ° C</td>
</tr>
<tr>
<th>Temperature Farenheit</th>
<td>
<%=@data.css("current_condition").css("temp_F").text %> F</td>
</tr>
<tr>
<th>Description</th>
<td>
<%=@data.css("current_condition").css("weatherDesc").text %>
</td>
</tr>
<tr>
<th>Wind speed Miles</th>
<td>
<%=@data.css("current_condition").css("windspeedMiles").text %>
</td>
</tr>
<tr>
<th>Wind speed Kmph</th>
<td>
<%=@data.css("current_condition").css("windspeedKmph").text %>
</td>
</tr>
<tr>
<th>Wind direction Degree</th>
<td>
<%=@data.css("current_condition").css("winddirDegree").text %>
</td>
</tr>
<tr>
<th>Wind direction 16 Point</th>
<td>
<%=@data.css("current_condition").css("winddir16Point").text %>
</td>
</tr>
<tr>
<th>precip MM</th>
<td>
<%=@data.css("current_condition").css("precipMM").text %>
</td>
</tr>
<tr>
<th>Humidity</th>
<td>
<%=@data.css("current_condition").css("humidity").text %>
</td>
</tr>
<tr>
<th>Visibility</th>
<td>
<%=@data.css("current_condition").css("visibility").text %>
</td>
</tr>
<tr>
<th>Pressure</th>
<td>
<%=@data.css("current_condition").css("pressure").text %>
</td>
</tr>
<tr>
<th>cloud cover</th>
<td>
<%=@data.css("current_condition").css("cloudcover").text %>
</td>
</tr>
<tr>
<th>Feels Like C</th>
<td>
<%=@data.css("current_condition").css("FeelsLikeC").text %>
</td>
</tr>
<tr>
<th>Feels Like F</th>
<td>
<%=@data.css("current_condition").css("FeelsLikeF").text %>
</td>
</tr>
</table>
<% @data.css("weather").each do |oldw| %>
<h3><%= oldw.css("date").text %></h3>
<table>
<tr>
<th>Maximum Temperature Celsius</th>
<td>
<%=oldw.css("maxtempC").text %> C</td>
</tr>
<tr>
<th>Minimum Temperature Celsius</th>
<td>
<%=oldw.css("mintempC").text %> C</td>
</tr>
</table>
<% end %>
Редактируем контроллер (указываем широту и долготу Санкт-Петербурга, 59.94, 30.31, также ваш Premium API KEY WorldWeatherOnline):
demo/app/controllers/informer_controller.rb
class InformerController < ApplicationController
def spb
require 'nokogiri'
url = "http://api.worldweatheronline.com/premium/v1/weather.ashx?q=59.94%2C30.31&num_of_days=4&key=*****************************"
@data = Nokogiri::XML(open(url))
end
end
Разумеется, всегда возможны варианты: сахар и соль, js и css по вкусу. Но для начала вроде бы и хватит? Открываем в браузере localhost:3000/informer/spb и любуемся полученным результатом... что же, теперь реально можно и по кофе.