Sign in

Зарегистрируйтесь, чтобы стать полноправным участником сообщества Masterpro.ws.

Ruby on Rails - это просто?

Отвечу со всей определенностью - да, просто... особенно в линуксе. Установка Ruby on Rails под виндой мне, помнится, дико не понравилась: долго, нудно и хлопотно.

Ruby on Rails
Ruby on Rails

А вот в 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

<p> <%= @data1.css("query").text %></p>
<% @data1.css("weather").each do |oldw| %>
<h2><%= oldw.css("date").text %></h2>
<div style="float:left; height:auto">
<table class="table table-striped">
<tbody>
<tr>
<th>Sunrise</th>
<td><%= oldw.css("astronomy").css("sunrise").text %></td>
</tr>
<tr>
<th>Sunset</th>
<td><%= oldw.css("astronomy").css("sunset").text %></td>
</tr>
<tr>
<th>Moonrise</th>
<td><%= oldw.css("astronomy").css("moonrise").text %></td>
</tr>
<tr>
<th>Moonset</th>
<td><%= oldw.css("astronomy").css("moonset").text %></td>
</tr>
<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>
</tbody>
</table>
</div>
<% end %>

 

Таким же образом редактируем еще два файла (указываем широту и долготу Санкт-Петербурга, 59.94, 30.31, также ваш Premium API KEY WorldWeatherOnline):

 

demo/app/controllers/informer_controller.rb

class InformerController < ApplicationController
# Nokogiri is a gem required to parse the XML format into the rails application.
require 'nokogiri'
def spb
url1 = "http://api.worldweatheronline.com/premium/v1/weather.ashx?q=59.94%2C30.31&num_of_days=1&key=*************************"
@data1 = Nokogiri::XML(open(url1))
end
end

 

Варьируя значение num_of_days в файле контроллера, получаем прогноз погоды, соответственно, на любой отрезок времени - от 1 дня до двух недель.

 

 

demo/app/views/layouts/application.html.erb

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<title>Premium Weather Api</title>
</head>
<body>
<div id="wraper">
<div>
<%= link_to "Weather SPB", {:controller=>"informer", :action=>"spb"}, :class=> (controller.controller_name == 'informer' && params[:action] == 'spb') ? "btn btn-info" : "btn" %>
</div>
<%= yield %>
</div>
</body>
</html>

 

Разумеется, всегда возможны варианты: сахар и соль, js и css по вкусу. Но для начала вроде бы и хватит? Открываем в браузере localhost:3000/informer/spb и любуемся полученным результатом... что же, теперь реально можно и по кофе.

 

1 Комментарий

  • Aleksej

    написал Aleksej

    Суббота, 17 сентября 2016 20:09

    to Hubbitus: уже внес ремарки в текст согласно твоим мудрым замечаниям...

Оставить комментарий

Добавьте ваш комментарий