<?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>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>
<item>
 <title>Ruby on Rails Google+</title>
 <link>http://ruby.inuse.ru/news/ruby-rails-google</link>
 <description>&lt;p&gt;
&lt;p&gt;Новости фреймворка, технологий связанных с Ruby on Rails и обзор гемов на странице &lt;noindex&gt;&lt;a href="https://plus.google.com/b/106642556008044967086/106642556008044967086/posts" rel="nofollow"&gt;I18n.locale = :ru&lt;/a&gt;&lt;/noindex&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ruby.inuse.ru/news/ruby-rails-google"&gt;читать дальше&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RuRubyRails/~4/6bi3OyBUrL4" height="1" width="1"/&gt;</description>
 <comments>http://ruby.inuse.ru/news/ruby-rails-google#comments</comments>
 <pubDate>Fri, 27 Jan 2012 13:17:58 +0000</pubDate>
 <dc:creator>spine</dc:creator>
 <guid isPermaLink="false">159679 at http://ruby.inuse.ru</guid>
</item>
<item>
 <title>Пять "скрытых" возможностей Rails 3.2</title>
 <link>http://ruby.inuse.ru/news/pyat-skrytyx-vozmozhnostei-rails-32</link>
 <description>&lt;ul&gt;
&lt;/li&gt;
&lt;li&gt;"умный" content_tag_for,&lt;/li&gt;
&lt;/li&gt;
&lt;li&gt;"умный" генератор миграций,&lt;/li&gt;
&lt;/li&gt;
&lt;li&gt;гибкая обработка исключений,&lt;/li&gt;
&lt;/li&gt;
&lt;li&gt;возможность управлять путями поиска паршалов,&lt;/li&gt;
&lt;/li&gt;
&lt;li&gt;возвращение сообщений в логе о сработавших фильтрах.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;p&gt;Это были пять возможностей по версии Жозе Валима (José Valim), автора книги "&lt;noindex&gt;&lt;a href="http://plataformatec.com.br/crafting-rails-applications/" rel="nofollow"&gt;Crafting Rails Applications&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://blog.plataformatec.com.br/2012/01/my-five-favorite-hidden-features-in-rails-3-2/" rel="nofollow"&gt;My five favorite “hidden” features in Rails 3.2&lt;/a&gt;&lt;/noindex&gt;".  Кстати, рекомендую также смотреть комментарии к этой статье.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ruby.inuse.ru/news/pyat-skrytyx-vozmozhnostei-rails-32"&gt;читать дальше&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RuRubyRails/~4/x2hgJbQHVGc" height="1" width="1"/&gt;</description>
 <comments>http://ruby.inuse.ru/news/pyat-skrytyx-vozmozhnostei-rails-32#comments</comments>
 <pubDate>Fri, 27 Jan 2012 09:08:15 +0000</pubDate>
 <dc:creator>spine</dc:creator>
 <guid isPermaLink="false">159659 at http://ruby.inuse.ru</guid>
</item>
<item>
 <title>Rails 3.2.1</title>
 <link>http://ruby.inuse.ru/news/rails-321</link>
 <description>&lt;p&gt;
&lt;p&gt;Релиз устраняет регрессию и исправляет ошибки в документации. &lt;noindex&gt;&lt;a href="https://gist.github.com/1685812" rel="nofollow"&gt;Детали..&lt;/a&gt;&lt;/noindex&gt;&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ruby.inuse.ru/news/rails-321"&gt;читать дальше&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RuRubyRails/~4/rYmCqHzkfCA" height="1" width="1"/&gt;</description>
 <comments>http://ruby.inuse.ru/news/rails-321#comments</comments>
 <pubDate>Fri, 27 Jan 2012 09:00:43 +0000</pubDate>
 <dc:creator>spine</dc:creator>
 <guid isPermaLink="false">159660 at http://ruby.inuse.ru</guid>
</item>
<item>
 <title>Вышел Rails 3.2.0</title>
 <link>http://ruby.inuse.ru/news/vyshel-rails-320</link>
 <description>&lt;p&gt;
&lt;p&gt;Тройное "Ура"! :) Новая версия Rails вышла 20 января.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;p&gt;Новое:&lt;/p&gt;
&lt;/p&gt;
&lt;ul&gt;
&lt;/li&gt;
&lt;li&gt;значительно ускорилась работа в development-режиме,&lt;/li&gt;
&lt;/li&gt;
&lt;li&gt;быстрее разбирается путь (route), благодаря новой &lt;noindex&gt;&lt;a href="https://github.com/rails/journey" rel="nofollow"&gt;Journey engine&lt;/a&gt;&lt;/noindex&gt;,&lt;/li&gt;
&lt;/li&gt;
&lt;li&gt;возможность просмотреть план запроса, созданного ARel,&lt;/li&gt;
&lt;/li&gt;
&lt;li&gt;возможность отмечать тегами записи лога,&lt;/li&gt;
&lt;/li&gt;
&lt;li&gt;Active Record Store.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
&lt;p&gt;Читайте официальный пресс-релиз &lt;noindex&gt;&lt;a href="http://weblog.rubyonrails.org/2012/1/20/rails-3-2-0-faster-dev-mode-routing-explain-queries-tagged-logger-store" rel="nofollow"&gt;"Rails 3.2.0: Faster dev mode &amp;amp; routing, explain queries, tagged logger, store"&lt;/a&gt;&lt;/noindex&gt;.&lt;/p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href="http://ruby.inuse.ru/news/vyshel-rails-320"&gt;читать дальше&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RuRubyRails/~4/VBZ_8FKAamU" height="1" width="1"/&gt;</description>
 <comments>http://ruby.inuse.ru/news/vyshel-rails-320#comments</comments>
 <pubDate>Mon, 23 Jan 2012 06:57:21 +0000</pubDate>
 <dc:creator>spine</dc:creator>
 <guid isPermaLink="false">159610 at http://ruby.inuse.ru</guid>
</item>
</channel>
</rss>

