<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0" xml:base="http://ruby.inuse.ru">
<channel>
 <title>Язык программирования Ruby - Лучший друг программиста</title>
 <link>http://ruby.inuse.ru</link>
 <description />
 <language>ru</language>
<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/RuRubyRails" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="rurubyrails" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
 <title>Небольшие корректировки в расписании грядущего .тостер { ruby }</title>
 <link>http://ruby.inuse.ru/news/nebolshie-korrektirovki-v-raspisanii-gryadushchego-toster-ruby</link>
 <description>&lt;p&gt;
&lt;p&gt;Скотт Чакон (GitHub) и Блейк Мизерани (Heroku), не смогут вылететь из Сан-Франциско и принять участие в конференции. Их заменят Константин Хазэ и Дуглас Кампос.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;Константин, как и планировалось, расскажет о Sinatra: его истории, текущем состоянии и будущем фреймворка.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;Дуглас расскажет о том, почему JRuby стоит использовать — прямо сейчас — и о том, почему JRuby быстр, практичен, почему не стоит бояться JVM, почему MRI можно и нужно заменить на JRuby прямо сейчас, и за счет чего на JRuby можно достигнуть отличных скоростей для приложения.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ruby.inuse.ru/news/nebolshie-korrektirovki-v-raspisanii-gryadushchego-toster-ruby"&gt;читать дальше&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RuRubyRails/~4/mohmuosP0c4" height="1" width="1"/&gt;</description>
 <comments>http://ruby.inuse.ru/news/nebolshie-korrektirovki-v-raspisanii-gryadushchego-toster-ruby#comments</comments>
 <pubDate>Tue, 07 Feb 2012 11:27:30 +0000</pubDate>
 <dc:creator>spine</dc:creator>
 <guid isPermaLink="false">160042 at http://ruby.inuse.ru</guid>
</item>
<item>
 <title>Strano - UI для управления Capistrano</title>
 <link>http://ruby.inuse.ru/news/strano-ui-dlya-upravleniya-capistrano</link>
 <description>&lt;p&gt;
&lt;p&gt;&lt;strong&gt;Strano&lt;/strong&gt; - это веб-интерфейс для управления задачами Capistrano. На данный момент работает только с репозиториями, хранящимися в GitHub.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;При подключении репозитория нового проекта Strano сам находит скрипты деплоя Capistrano и читает список задач из них.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;История выполнения всех задач сохраняется, поэтому всегда можно посмотреть что и как прошло.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;Код приложения открыт и Джоэль Мосс (Joel Moss), автор проекта, приглашает всех желающих присоединиться к работе.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ruby.inuse.ru/news/strano-ui-dlya-upravleniya-capistrano"&gt;читать дальше&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RuRubyRails/~4/FU0ctepZ6d8" height="1" width="1"/&gt;</description>
 <comments>http://ruby.inuse.ru/news/strano-ui-dlya-upravleniya-capistrano#comments</comments>
 <pubDate>Tue, 07 Feb 2012 10:00:05 +0000</pubDate>
 <dc:creator>spine</dc:creator>
 <guid isPermaLink="false">159990 at http://ruby.inuse.ru</guid>
</item>
<item>
 <title>Sidekiq - очередь сообщений, работающая эффективнее Resque</title>
 <link>http://ruby.inuse.ru/news/sidekiq-ochered-soobshchenii-rabotayushchaya-effektivnee-resque</link>
 <description>&lt;p&gt;
&lt;p&gt;&lt;strong&gt;Sidekiq&lt;/strong&gt; - новый игрок на поле очередей сообщений, реализующий в своей работе &lt;noindex&gt;&lt;a href="http://en.wikipedia.org/wiki/Actor_model" rel="nofollow"&gt;Actor model&lt;/a&gt;&lt;/noindex&gt;.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;Sidekiq совместим Resque и тоже использует Redis в качестве бэкенда. Большая разница с Resque в том, что Sidekiq использует многопоточность  при обработке сообщений.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;На данный момент возможно работа только с Rails 3.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&lt;strong&gt;Использование&lt;/strong&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Добавить в Gemfile строку &lt;span class="codeblock"&gt;gem 'sidekiq'&lt;/span&gt;&lt;/li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Добавить воркера в каталог &lt;span class="codeblock"&gt;app/worker&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ruby.inuse.ru/news/sidekiq-ochered-soobshchenii-rabotayushchaya-effektivnee-resque"&gt;читать дальше&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RuRubyRails/~4/bNMzHToaFYI" height="1" width="1"/&gt;</description>
 <comments>http://ruby.inuse.ru/news/sidekiq-ochered-soobshchenii-rabotayushchaya-effektivnee-resque#comments</comments>
 <pubDate>Tue, 07 Feb 2012 08:58:25 +0000</pubDate>
 <dc:creator>spine</dc:creator>
 <guid isPermaLink="false">159991 at http://ruby.inuse.ru</guid>
</item>
<item>
 <title>Весьма «серьёзный» движок</title>
 <link>http://ruby.inuse.ru/news/vesma-%C2%ABsereznyi%C2%BB-dvizhok</link>
 <description>&lt;p&gt;
&lt;p&gt;На чём работает &lt;em&gt;ваш&lt;/em&gt; блог? WordPress? LiveJournal? Jekyll? Хватит это терпеть!&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;Нет ничего приятнее, чем иметь собственный standalone-блог, однако нет ничего ужаснее, чем заново изобретать велосипед.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;Небольшой блог очень удобно вести при помощи обычных текстовых файлов, которые правильным образом обрабатываются и подаются читателю. Для этого идеально подходит движок &lt;noindex&gt;&lt;a href="https://github.com/colszowka/serious" rel="nofollow"&gt;Serious&lt;/a&gt;&lt;/noindex&gt;, но похоже, что его развитие остановилось (это печально).&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ruby.inuse.ru/news/vesma-%C2%ABsereznyi%C2%BB-dvizhok"&gt;читать дальше&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RuRubyRails/~4/QSjaIX8ZoSw" height="1" width="1"/&gt;</description>
 <comments>http://ruby.inuse.ru/news/vesma-%C2%ABsereznyi%C2%BB-dvizhok#comments</comments>
 <pubDate>Sun, 05 Feb 2012 22:23:56 +0000</pubDate>
 <dc:creator>spine</dc:creator>
 <guid isPermaLink="false">159992 at http://ruby.inuse.ru</guid>
</item>
<item>
 <title>Service Layer в Rails приложениях</title>
 <link>http://ruby.inuse.ru/news/service-layer-v-rails-prilozheniyax</link>
 <description>&lt;p&gt;
&lt;p&gt;Jared Carroll описывает назначения паттерна, приводит классификацию сервисов и примеры использования.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;По сути эта статья является выдержкой из книги Эрика Эванса Предметно-ориентированное проектирование (DDD).&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;&lt;a href="http://blog.carbonfive.com/2012/01/10/does-my-rails-app-need-a-service-layer/" rel="nofollow"&gt;&lt;noindex&gt;&lt;a href="http://blog.carbonfive.com/2012/01/10/does-my-rails-app-need-a-service-layer/" rel="nofollow"&gt;http://blog.carbonfive.com/2012/01/10/does-my-rails-app-need-a-service-layer/&lt;/a&gt;&lt;/noindex&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ruby.inuse.ru/news/service-layer-v-rails-prilozheniyax"&gt;читать дальше&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RuRubyRails/~4/UCuJq_7_cJ4" height="1" width="1"/&gt;</description>
 <comments>http://ruby.inuse.ru/news/service-layer-v-rails-prilozheniyax#comments</comments>
 <pubDate>Sat, 04 Feb 2012 06:07:06 +0000</pubDate>
 <dc:creator>spine</dc:creator>
 <guid isPermaLink="false">159905 at http://ruby.inuse.ru</guid>
</item>
<item>
 <title>Где хранить сложную логику?</title>
 <link>http://ruby.inuse.ru/news/gde-xranit-slozhnuyu-logiku</link>
 <description>&lt;p&gt;
&lt;p&gt;Как часто у вас возникало ощущение, что не понимаешь куда "разместить" сложную бизнес-логику?&lt;br /&gt;
В контроллер? Может в модель, потому что контроллер должен быть "skinny"?&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;Эрик Смит (Eric Smith) из 8th Light имеет свое, на мой взгляд отличное, решение этого вопроса. В статье он не только показывает как просто пойти ложным путем при усложнении логики, но и дает рекомендации по исправлению ситуации.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;Читайте "&lt;noindex&gt;&lt;a href="http://blog.8thlight.com/eric-smith/2011/12/09/stop-putting-buisiness-logic-in-controllers.html" rel="nofollow"&gt;Mind Your Own Business Rails&lt;/a&gt;&lt;/noindex&gt;"&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ruby.inuse.ru/news/gde-xranit-slozhnuyu-logiku"&gt;читать дальше&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RuRubyRails/~4/iOQewzR9Znk" height="1" width="1"/&gt;</description>
 <comments>http://ruby.inuse.ru/news/gde-xranit-slozhnuyu-logiku#comments</comments>
 <pubDate>Fri, 03 Feb 2012 13:39:57 +0000</pubDate>
 <dc:creator>spine</dc:creator>
 <guid isPermaLink="false">159906 at http://ruby.inuse.ru</guid>
</item>
<item>
 <title>imperavi-rails - это mountable engine для rails 3.1+, который добавляет редактор Imperavi в приложение</title>
 <link>http://ruby.inuse.ru/news/imperavi-rails-eto-mountable-engine-dlya-rails-31-kotoryi-dobavlyaet-redaktor-imperavi-v-prilozhenie</link>
 <description>&lt;p&gt;
&lt;p&gt;Всем привет! Все наверное видели отличненький визуальный редактор Imperavi от компании Imperavi? :) Если нет, то можно посмотреть здесь &lt;a href="http://imperavi.com/redactor/" rel="nofollow"&gt;&lt;noindex&gt;&lt;a href="http://imperavi.com/redactor/" rel="nofollow"&gt;http://imperavi.com/redactor/&lt;/a&gt;&lt;/noindex&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;Так вот, я организовал репозиторий и пытаюсь сделать этот редактор удобным для использования в Rails. Первая ласточка уже есть: &lt;a href="https://github.com/tanraya/imperavi-rails" rel="nofollow"&gt;&lt;noindex&gt;&lt;a href="https://github.com/tanraya/imperavi-rails" rel="nofollow"&gt;https://github.com/tanraya/imperavi-rails&lt;/a&gt;&lt;/noindex&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;Нужно некоторые вещи довести до ума, написать тесты и прочее. Но - оно уже работает. Можно с осторожностью пользоваться.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ruby.inuse.ru/news/imperavi-rails-eto-mountable-engine-dlya-rails-31-kotoryi-dobavlyaet-redaktor-imperavi-v-prilozhenie"&gt;читать дальше&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RuRubyRails/~4/JsYeopscRQM" height="1" width="1"/&gt;</description>
 <comments>http://ruby.inuse.ru/news/imperavi-rails-eto-mountable-engine-dlya-rails-31-kotoryi-dobavlyaet-redaktor-imperavi-v-prilozhenie#comments</comments>
 <pubDate>Thu, 02 Feb 2012 18:43:28 +0000</pubDate>
 <dc:creator>spine</dc:creator>
 <guid isPermaLink="false">159907 at http://ruby.inuse.ru</guid>
</item>
<item>
 <title>ClientSit - ошибки в JS</title>
 <link>http://ruby.inuse.ru/news/clientsit-oshibki-v-js</link>
 <description>&lt;p&gt;
&lt;p&gt;Прототип сервиса для трэкинга клиентских ошибок в JS, зарегистрироваться и получить код для вставки можно тут - &lt;a href="http://clientsit.heroku.com/" rel="nofollow"&gt;&lt;noindex&gt;&lt;a href="http://clientsit.heroku.com/" rel="nofollow"&gt;http://clientsit.heroku.com/&lt;/a&gt;&lt;/noindex&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;можно поднять и свой трэкер.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;но прежде читаем README на гитхабе для понимания&lt;br /&gt;
&lt;a href="https://github.com/homakov/ClientSit" rel="nofollow"&gt;&lt;noindex&gt;&lt;a href="https://github.com/homakov/ClientSit" rel="nofollow"&gt;https://github.com/homakov/ClientSit&lt;/a&gt;&lt;/noindex&gt;&lt;/a&gt;&lt;br /&gt;
жду ваших пул риквестов )&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ruby.inuse.ru/news/clientsit-oshibki-v-js"&gt;читать дальше&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RuRubyRails/~4/IXOJxCSHGZw" height="1" width="1"/&gt;</description>
 <comments>http://ruby.inuse.ru/news/clientsit-oshibki-v-js#comments</comments>
 <pubDate>Tue, 31 Jan 2012 07:39:29 +0000</pubDate>
 <dc:creator>spine</dc:creator>
 <guid isPermaLink="false">159803 at http://ruby.inuse.ru</guid>
</item>
<item>
 <title>Ruby Hero Awards 2012</title>
 <link>http://ruby.inuse.ru/news/ruby-hero-awards-2012</link>
 <description>&lt;p&gt;
&lt;p&gt;Открыто голосование за тех, кто достоин звания Ruby Hero. Назвать своего кандидата можно на сайте &lt;noindex&gt;&lt;a href="http://rubyheroes.com/" rel="nofollow"&gt;rubyheroes.com&lt;/a&gt;&lt;/noindex&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;Я отдал свой голос за Питера Купера (&lt;noindex&gt;&lt;a href="http://peterc.org/" rel="nofollow"&gt;Peter Cooper&lt;/a&gt;&lt;/noindex&gt;). А вы?&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ruby.inuse.ru/news/ruby-hero-awards-2012"&gt;читать дальше&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RuRubyRails/~4/V2NbIo9upPs" height="1" width="1"/&gt;</description>
 <comments>http://ruby.inuse.ru/news/ruby-hero-awards-2012#comments</comments>
 <pubDate>Tue, 31 Jan 2012 07:14:11 +0000</pubDate>
 <dc:creator>spine</dc:creator>
 <guid isPermaLink="false">159804 at http://ruby.inuse.ru</guid>
</item>
<item>
 <title>Как правильно скачивать большие файлы с помощью Ruby?</title>
 <link>http://ruby.inuse.ru/news/kak-pravilno-skachivat-bolshie-faily-s-pomoshchyu-ruby</link>
 <description>&lt;p&gt;
&lt;p&gt;В случаях, когда получаемый файл имеет размеры превышающие размеры доступной оперативной памяти, нужно записывать получаемый поток данных сразу на диск.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;В коде это выглядит так:&lt;/p&gt;
&lt;/p&gt;
&lt;pre&gt;&lt;div class="codeblock"&gt;&lt;div class="ruby" style="font-family: monospace;"&gt;Net::HTTP.&lt;span style="color:#9900CC;"&gt;start&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color:#996600;"&gt;&amp;quot;someurl_without_the_protocol.com&amp;quot;&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color:#9966CC; font-weight:bold;"&gt;do&lt;/span&gt; |http|&lt;br /&gt;&amp;nbsp; &lt;span style="color:#9966CC; font-weight:bold;"&gt;begin&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; file = &lt;span style="color:#CC0066; font-weight:bold;"&gt;open&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color:#996600;"&gt;&amp;quot;/path/to/file.mov&amp;quot;&lt;/span&gt;, 'wb'&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; http.&lt;span style="color:#9900CC;"&gt;request_get&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#40;&lt;/span&gt;'/' + URI.&lt;span style="color:#9900CC;"&gt;encode&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color:#996600;"&gt;&amp;quot;file.mov&amp;quot;&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color:#9966CC; font-weight:bold;"&gt;do&lt;/span&gt; |response|&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; response.&lt;span style="color:#9900CC;"&gt;read_body&lt;/span&gt; &lt;span style="color:#9966CC; font-weight:bold;"&gt;do&lt;/span&gt; |segment|&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; file.&lt;span style="color:#9900CC;"&gt;write&lt;/span&gt;&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#40;&lt;/span&gt;segment&lt;span style="color:#006600; font-weight:bold;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color:#9966CC; font-weight:bold;"&gt;end&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color:#9966CC; font-weight:bold;"&gt;end&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span style="color:#9966CC; font-weight:bold;"&gt;ensure&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; file.&lt;span style="color:#9900CC;"&gt;close&lt;/span&gt;&lt;br /&gt;&amp;nbsp; &lt;span style="color:#9966CC; font-weight:bold;"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#9966CC; font-weight:bold;"&gt;end&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/pre&gt;&lt;p&gt;
&lt;p&gt;Пример кода и совет из статьи "&lt;noindex&gt;&lt;a href="http://www.dotnetguy.co.uk/post/2011/09/27/large-ruby-file-downloads-done-right" rel="nofollow"&gt;Large Ruby File Downloads Done Right!&lt;/a&gt;&lt;/noindex&gt;"&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ruby.inuse.ru/news/kak-pravilno-skachivat-bolshie-faily-s-pomoshchyu-ruby"&gt;читать дальше&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RuRubyRails/~4/rERI2VjiEHk" height="1" width="1"/&gt;</description>
 <comments>http://ruby.inuse.ru/news/kak-pravilno-skachivat-bolshie-faily-s-pomoshchyu-ruby#comments</comments>
 <pubDate>Mon, 30 Jan 2012 06:53:03 +0000</pubDate>
 <dc:creator>spine</dc:creator>
 <guid isPermaLink="false">159730 at http://ruby.inuse.ru</guid>
</item>
</channel>
</rss>

