<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>по стопам webkill&#039;а &#187; ruby on rails 4</title>
	<atom:link href="http://blog.lukmus.ru/tag/ruby-on-rails-4/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.lukmus.ru</link>
	<description>это наш химический дом для печальных жителей Земли</description>
	<lastBuildDate>Sat, 21 Oct 2023 19:10:13 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>собственный способ отправки сообщений в ActionMailer</title>
		<link>http://blog.lukmus.ru/2014/08/22/add_delivery_method/</link>
		<comments>http://blog.lukmus.ru/2014/08/22/add_delivery_method/#comments</comments>
		<pubDate>Fri, 22 Aug 2014 03:03:39 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[ruby & ruby on rails]]></category>
		<category><![CDATA[ActionMailer]]></category>
		<category><![CDATA[ruby on rails 4]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=2195</guid>
		<description><![CDATA[Не типичная ситуация, но вполне реальная. Заголовок не очень доходчиво объясняет то, что я тут изложу. Предположим, вы используете Devise и хотите заместо E-mail, которая по умолчанию является обязательным полем для пользователя, а также с помощью протокола SMTP которой происходит восстановление пароля и прочие фенечки, воспользоваться жаббером. Короче говоря, после уточнений в офисе, ситуация такова: [...]]]></description>
			<content:encoded><![CDATA[<p>Не типичная ситуация, но вполне реальная. Заголовок не очень доходчиво объясняет то, что я тут изложу. Предположим, вы используете Devise и хотите заместо E-mail, которая по умолчанию является обязательным полем для пользователя, а также с помощью протокола SMTP которой происходит восстановление пароля и прочие фенечки, воспользоваться жаббером.<br />
<img src="http://blog.lukmus.ru/wp-content/uploads/2014/08/pYVHBrs3T60.jpg" alt="" title="ActionMailer is simple with Jen Psaki" width="517" height="435" class="alignnone size-full wp-image-2197" /><span id="more-2195"></span><br />
Короче говоря, <del datetime="2014-08-22T01:20:09+00:00">после уточнений в офисе</del>, ситуация такова: необходимо подменить способ отправки всех писем в Rails-приложений. Если обычно используется SMTP и сообщения являются обычными e-mail письмами, то тут будет рассматриваться случай когда письма являются сообщениями другого рода, например жаббер-сообщениями, а за место SMTP будет, соответственно, XMPP. Подменяться будут не какие-то отдельные сообщения в отдельно взятом экшене отдельного контроллера, а во всем приложении и сразу.</p>
<p>По началу я, будучи наивным юнцом, не знал, что в Rails предусмотрена возможность введения своего протокола отправки, и подумывал сделать так: с помощью <a href="https://github.com/aarongough/mini-smtp-server" rel='nofollow' target='_blank'>mini-smtp-server</a>, который бы я встроил в rake-фаил и на который бы настроил приложение, поднять SMTP-сервер, в котором уже и устроить подмену SMTP на нужный мне способ. Но судьба сложилась иначе и звезды указали мне путь на <code>ActionMailer::Base.add_delivery_method</code>.</p>
<p>Основу для данной инструкции я украл <a href="http://codedecoder.wordpress.com/2014/02/10/email-through-api-override-action_mailer-deliver/" rel='nofollow' target='_blank'>отсюда</a>, однако от приведенной в посте инструкции ваша радость была бы неполной <del datetime="2014-08-22T01:20:09+00:00">без горького шоколада &#8220;Россия&#8221;</del>, т.к. досконально выполнив все что там сказано, можно наблюдать:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="ruby" style="font-family:monospace;">$ rails c
Loading development environment <span style="color:#006600; font-weight:bold;">&#40;</span>Rails 4.0.0<span style="color:#006600; font-weight:bold;">&#41;</span>
2.0.0p247 :001 <span style="color:#006600; font-weight:bold;">&gt;</span> User.<span style="color:#9900CC;">first</span>.<span style="color:#9900CC;">send_reset_password_instructions</span>
  User <span style="color:#CC0066; font-weight:bold;">Load</span> <span style="color:#006600; font-weight:bold;">&#40;</span>29.6ms<span style="color:#006600; font-weight:bold;">&#41;</span>  <span style="color:#CC0066; font-weight:bold;">SELECT</span> <span style="color:#996600;">`users`</span>.<span style="color:#006600; font-weight:bold;">*</span> FROM <span style="color:#996600;">`users`</span> ORDER BY <span style="color:#996600;">`users`</span>.<span style="color:#996600;">`id`</span> ASC LIMIT <span style="color:#006666;">1</span>
  User <span style="color:#CC0066; font-weight:bold;">Load</span> <span style="color:#006600; font-weight:bold;">&#40;</span>74.5ms<span style="color:#006600; font-weight:bold;">&#41;</span>  <span style="color:#CC0066; font-weight:bold;">SELECT</span> <span style="color:#996600;">`users`</span>.<span style="color:#006600; font-weight:bold;">*</span> FROM <span style="color:#996600;">`users`</span> WHERE <span style="color:#996600;">`users`</span>.<span style="color:#996600;">`reset_password_token`</span> = <span style="color:#996600;">'59c1c232f95e7a96c4ac735b8fd899b5d993b07f7261a9551c68280ceb443577'</span> LIMIT <span style="color:#006666;">1</span>
   <span style="color:#006600; font-weight:bold;">&#40;</span>0.2ms<span style="color:#006600; font-weight:bold;">&#41;</span>  <span style="color:#9966CC; font-weight:bold;">BEGIN</span>
  SQL <span style="color:#006600; font-weight:bold;">&#40;</span>101.3ms<span style="color:#006600; font-weight:bold;">&#41;</span>  UPDATE <span style="color:#996600;">`users`</span> SET <span style="color:#996600;">`reset_password_token`</span> = <span style="color:#996600;">'59c1c232f95e7a96c4ac735b8fd899b5d993b07f7261a9551c68280ceb443577'</span>, <span style="color:#996600;">`reset_password_sent_at`</span> = <span style="color:#996600;">'2014-08-22 02:18:36'</span>, <span style="color:#996600;">`updated_at`</span> = <span style="color:#996600;">'2014-08-22 02:18:36'</span> WHERE <span style="color:#996600;">`users`</span>.<span style="color:#996600;">`id`</span> = <span style="color:#006666;">1</span>
   <span style="color:#006600; font-weight:bold;">&#40;</span>297.8ms<span style="color:#006600; font-weight:bold;">&#41;</span>  COMMIT
<span style="color:#CC00FF; font-weight:bold;">ArgumentError</span>: wrong number of arguments <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006666;">1</span> <span style="color:#9966CC; font-weight:bold;">for</span> <span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#41;</span>
        from <span style="color:#006600; font-weight:bold;">/</span>usr<span style="color:#006600; font-weight:bold;">/</span>local<span style="color:#006600; font-weight:bold;">/</span>rvm<span style="color:#006600; font-weight:bold;">/</span>gems<span style="color:#006600; font-weight:bold;">/</span>ruby<span style="color:#006600; font-weight:bold;">-</span>2.0.0<span style="color:#006600; font-weight:bold;">-</span>p247<span style="color:#006600; font-weight:bold;">/</span>gems<span style="color:#006600; font-weight:bold;">/</span>mail<span style="color:#006600; font-weight:bold;">-</span>2.5.4<span style="color:#006600; font-weight:bold;">/</span>lib<span style="color:#006600; font-weight:bold;">/</span>mail<span style="color:#006600; font-weight:bold;">/</span>message.<span style="color:#9900CC;">rb</span>:<span style="color:#006666;">257</span>:<span style="color:#9966CC; font-weight:bold;">in</span> <span style="color:#996600;">`initialize'
        from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/mail-2.5.4/lib/mail/message.rb:257:in `</span>new<span style="color:#996600;">'
        from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/mail-2.5.4/lib/mail/message.rb:257:in `delivery_method'</span>
        from <span style="color:#006600; font-weight:bold;">/</span>usr<span style="color:#006600; font-weight:bold;">/</span>local<span style="color:#006600; font-weight:bold;">/</span>rvm<span style="color:#006600; font-weight:bold;">/</span>gems<span style="color:#006600; font-weight:bold;">/</span>ruby<span style="color:#006600; font-weight:bold;">-</span>2.0.0<span style="color:#006600; font-weight:bold;">-</span>p247<span style="color:#006600; font-weight:bold;">/</span>gems<span style="color:#006600; font-weight:bold;">/</span>actionmailer<span style="color:#006600; font-weight:bold;">-</span>4.0.0<span style="color:#006600; font-weight:bold;">/</span>lib<span style="color:#006600; font-weight:bold;">/</span>action_mailer<span style="color:#006600; font-weight:bold;">/</span>delivery_methods.<span style="color:#9900CC;">rb</span>:<span style="color:#006666;">66</span>:<span style="color:#9966CC; font-weight:bold;">in</span> <span style="color:#996600;">`wrap_delivery_behavior'
        from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/actionmailer-4.0.0/lib/action_mailer/delivery_methods.rb:80:in `</span>wrap_delivery_behavior!<span style="color:#996600;">'
        from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/actionmailer-4.0.0/lib/action_mailer/base.rb:684:in `mail'</span>
        from <span style="color:#006600; font-weight:bold;">/</span>usr<span style="color:#006600; font-weight:bold;">/</span>local<span style="color:#006600; font-weight:bold;">/</span>rvm<span style="color:#006600; font-weight:bold;">/</span>gems<span style="color:#006600; font-weight:bold;">/</span>ruby<span style="color:#006600; font-weight:bold;">-</span>2.0.0<span style="color:#006600; font-weight:bold;">-</span>p247<span style="color:#006600; font-weight:bold;">/</span>gems<span style="color:#006600; font-weight:bold;">/</span>devise<span style="color:#006600; font-weight:bold;">-</span>3.1.1<span style="color:#006600; font-weight:bold;">/</span>lib<span style="color:#006600; font-weight:bold;">/</span>devise<span style="color:#006600; font-weight:bold;">/</span>mailers<span style="color:#006600; font-weight:bold;">/</span>helpers.<span style="color:#9900CC;">rb</span>:<span style="color:#006666;">16</span>:<span style="color:#9966CC; font-weight:bold;">in</span> <span style="color:#996600;">`devise_mail'
        from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/devise-3.1.1/app/mailers/devise/mailer.rb:11:in `</span>reset_password_instructions<span style="color:#996600;">'
        from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/actionpack-4.0.0/lib/abstract_controller/base.rb:189:in `process_action'</span>
        from <span style="color:#006600; font-weight:bold;">/</span>usr<span style="color:#006600; font-weight:bold;">/</span>local<span style="color:#006600; font-weight:bold;">/</span>rvm<span style="color:#006600; font-weight:bold;">/</span>gems<span style="color:#006600; font-weight:bold;">/</span>ruby<span style="color:#006600; font-weight:bold;">-</span>2.0.0<span style="color:#006600; font-weight:bold;">-</span>p247<span style="color:#006600; font-weight:bold;">/</span>gems<span style="color:#006600; font-weight:bold;">/</span>actionpack<span style="color:#006600; font-weight:bold;">-</span>4.0.0<span style="color:#006600; font-weight:bold;">/</span>lib<span style="color:#006600; font-weight:bold;">/</span>abstract_controller<span style="color:#006600; font-weight:bold;">/</span>callbacks.<span style="color:#9900CC;">rb</span>:<span style="color:#006666;">18</span>:<span style="color:#9966CC; font-weight:bold;">in</span> <span style="color:#996600;">`block in process_action'
        from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.0.0/lib/active_support/callbacks.rb:373:in `</span>_run__3933474617966347476__process_action__callbacks<span style="color:#996600;">'
        from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/activesupport-4.0.0/lib/active_support/callbacks.rb:80:in `run_callbacks'</span>
        from <span style="color:#006600; font-weight:bold;">/</span>usr<span style="color:#006600; font-weight:bold;">/</span>local<span style="color:#006600; font-weight:bold;">/</span>rvm<span style="color:#006600; font-weight:bold;">/</span>gems<span style="color:#006600; font-weight:bold;">/</span>ruby<span style="color:#006600; font-weight:bold;">-</span>2.0.0<span style="color:#006600; font-weight:bold;">-</span>p247<span style="color:#006600; font-weight:bold;">/</span>gems<span style="color:#006600; font-weight:bold;">/</span>actionpack<span style="color:#006600; font-weight:bold;">-</span>4.0.0<span style="color:#006600; font-weight:bold;">/</span>lib<span style="color:#006600; font-weight:bold;">/</span>abstract_controller<span style="color:#006600; font-weight:bold;">/</span>callbacks.<span style="color:#9900CC;">rb</span>:<span style="color:#006666;">17</span>:<span style="color:#9966CC; font-weight:bold;">in</span> <span style="color:#996600;">`process_action'
        from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/actionpack-4.0.0/lib/abstract_controller/base.rb:136:in `</span>process<span style="color:#996600;">'
        from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/actionpack-4.0.0/lib/abstract_controller/rendering.rb:44:in `process'</span>
        from <span style="color:#006600; font-weight:bold;">/</span>usr<span style="color:#006600; font-weight:bold;">/</span>local<span style="color:#006600; font-weight:bold;">/</span>rvm<span style="color:#006600; font-weight:bold;">/</span>gems<span style="color:#006600; font-weight:bold;">/</span>ruby<span style="color:#006600; font-weight:bold;">-</span>2.0.0<span style="color:#006600; font-weight:bold;">-</span>p247<span style="color:#006600; font-weight:bold;">/</span>gems<span style="color:#006600; font-weight:bold;">/</span>actionmailer<span style="color:#006600; font-weight:bold;">-</span>4.0.0<span style="color:#006600; font-weight:bold;">/</span>lib<span style="color:#006600; font-weight:bold;">/</span>action_mailer<span style="color:#006600; font-weight:bold;">/</span>base.<span style="color:#9900CC;">rb</span>:<span style="color:#006666;">503</span>:<span style="color:#9966CC; font-weight:bold;">in</span> <span style="color:#996600;">`process'
        from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/actionmailer-4.0.0/lib/action_mailer/base.rb:497:in `</span>initialize<span style="color:#996600;">'
        from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/actionmailer-4.0.0/lib/action_mailer/base.rb:480:in `new'</span>
        from <span style="color:#006600; font-weight:bold;">/</span>usr<span style="color:#006600; font-weight:bold;">/</span>local<span style="color:#006600; font-weight:bold;">/</span>rvm<span style="color:#006600; font-weight:bold;">/</span>gems<span style="color:#006600; font-weight:bold;">/</span>ruby<span style="color:#006600; font-weight:bold;">-</span>2.0.0<span style="color:#006600; font-weight:bold;">-</span>p247<span style="color:#006600; font-weight:bold;">/</span>gems<span style="color:#006600; font-weight:bold;">/</span>actionmailer<span style="color:#006600; font-weight:bold;">-</span>4.0.0<span style="color:#006600; font-weight:bold;">/</span>lib<span style="color:#006600; font-weight:bold;">/</span>action_mailer<span style="color:#006600; font-weight:bold;">/</span>base.<span style="color:#9900CC;">rb</span>:<span style="color:#006666;">480</span>:<span style="color:#9966CC; font-weight:bold;">in</span> <span style="color:#996600;">`method_missing'
        from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/devise-3.1.1/lib/devise/models/authenticatable.rb:175:in `</span>send_devise_notification<span style="color:#996600;">'
        from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/devise-3.1.1/lib/devise/models/recoverable.rb:54:in `send_reset_password_instructions'</span>
        from <span style="color:#006600; font-weight:bold;">&#40;</span>irb<span style="color:#006600; font-weight:bold;">&#41;</span>:<span style="color:#006666;">1</span>
        from <span style="color:#006600; font-weight:bold;">/</span>usr<span style="color:#006600; font-weight:bold;">/</span>local<span style="color:#006600; font-weight:bold;">/</span>rvm<span style="color:#006600; font-weight:bold;">/</span>gems<span style="color:#006600; font-weight:bold;">/</span>ruby<span style="color:#006600; font-weight:bold;">-</span>2.0.0<span style="color:#006600; font-weight:bold;">-</span>p247<span style="color:#006600; font-weight:bold;">/</span>gems<span style="color:#006600; font-weight:bold;">/</span>railties<span style="color:#006600; font-weight:bold;">-</span>4.0.0<span style="color:#006600; font-weight:bold;">/</span>lib<span style="color:#006600; font-weight:bold;">/</span>rails<span style="color:#006600; font-weight:bold;">/</span>commands<span style="color:#006600; font-weight:bold;">/</span>console.<span style="color:#9900CC;">rb</span>:<span style="color:#006666;">90</span>:<span style="color:#9966CC; font-weight:bold;">in</span> <span style="color:#996600;">`start'
        from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/railties-4.0.0/lib/rails/commands/console.rb:9:in `</span>start<span style="color:#996600;">'
        from /usr/local/rvm/gems/ruby-2.0.0-p247/gems/railties-4.0.0/lib/rails/commands.rb:64:in `&lt;top (required)&gt;'</span>
        from bin<span style="color:#006600; font-weight:bold;">/</span>rails:<span style="color:#006666;">4</span>:<span style="color:#9966CC; font-weight:bold;">in</span> <span style="color:#996600;">`require'
        from bin/rails:4:in `</span><span style="color:#006600; font-weight:bold;">&lt;</span>main<span style="color:#006600; font-weight:bold;">&gt;</span><span style="color:#996600;">'2.0.0p247 :002 &gt;</span></pre></td></tr></table></div>

<p>Поэтому я перескажу все от начала и до конца с учетом поправки косяка, который не заметил Arun Kumar Singh (так зовут перца, который ведет этот codedecoder.wordpress.com), при этом мой новый способ отправки будет XMPP.</p>
<h3>свой класс со способом отправки</h3>
<p>Создаем файл <code>lib/xmpp_delivery.rb</code> с классом, который будет содержать новый способ доставки.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> XMPPDelivery
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> initialize<span style="color:#006600; font-weight:bold;">&#40;</span>opts=<span style="color:#006600; font-weight:bold;">&#123;</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>
    <span style="color:#0066ff; font-weight:bold;">@settings</span>=opts
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
  <span style="color:#9966CC; font-weight:bold;">def</span> deliver!<span style="color:#006600; font-weight:bold;">&#40;</span>message<span style="color:#006600; font-weight:bold;">&#41;</span>
      <span style="color:#008000; font-style:italic;">#тут как бы горы кода по отправки сообщений в жабу</span>
      <span style="color:#9966CC; font-weight:bold;">if</span> xmpp.<span style="color:#9900CC;">deliver</span>!<span style="color:#006600; font-weight:bold;">&#40;</span>@settings<span style="color:#006600; font-weight:bold;">&#41;</span>
        <span style="color:#CC0066; font-weight:bold;">p</span> message
        <span style="color:#0000FF; font-weight:bold;">true</span>
      <span style="color:#9966CC; font-weight:bold;">else</span> <span style="color:#0000FF; font-weight:bold;">false</span> <span style="color:#9966CC; font-weight:bold;">end</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>Ошибка Codedecoder&#8217;а исправляется уже на этом этапе &#8211; он забыл копипастнуть в листинг приведенного им модуля, метод <code>initialize</code> с одним обязательным параметром, который указывается в <code>/usr/local/rvm/gems/ruby-2.0.0-p247/gems/mail-2.5.4/lib/mail/message.rb:257</code>.</p>
<h3>подключение нового класса</h3>
<p>Далее в config/environment.rb необходимо подключить созданный файл:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#008000; font-style:italic;"># Load the Rails application.</span>
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">expand_path</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'../application'</span>, <span style="color:#0000FF; font-weight:bold;">__FILE__</span><span style="color:#006600; font-weight:bold;">&#41;</span>
&nbsp;
<span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">'xmpp_delivery.rb'</span>
&nbsp;
<span style="color:#008000; font-style:italic;"># Initialize the Rails application.</span>
<span style="color:#6666ff; font-weight:bold;">PsakiSpeechCreator::Application</span>.<span style="color:#9900CC;">initialize</span>!</pre></td></tr></table></div>

<h3>объявление нового способа</h3>
<p>Теперь надо добавить инициатор <code>config/initializers/mailer.rb</code>, в котором будет торжественно объявляться новый способ:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#6666ff; font-weight:bold;">ActionMailer::Base</span>.<span style="color:#9900CC;">add_delivery_method</span> <span style="color:#ff3333; font-weight:bold;">:xmpp</span>, XMPPDelivery</pre></td></tr></table></div>

<h3>настройка на новый способ</h3>
<p>И в конце, в настройках нужной среды (например в <code>config/environments/development.rb</code>), указать способ как основной:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="ruby" style="font-family:monospace;">...
  <span style="color:#9900CC;">config</span>.<span style="color:#9900CC;">action_mailer</span>.<span style="color:#9900CC;">default_url_options</span> = <span style="color:#006600; font-weight:bold;">&#123;</span> <span style="color:#ff3333; font-weight:bold;">:host</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#996600;">'localhost'</span><span style="color:#006600; font-weight:bold;">&#125;</span>
  config.<span style="color:#9900CC;">action_mailer</span>.<span style="color:#9900CC;">delivery_method</span> = <span style="color:#ff3333; font-weight:bold;">:xmpp</span>
...</pre></td></tr></table></div>

<p>А если кому-то серьезно надоел e-mail в Devise и он хочет сделать отправку в жабу, то вам пригодится гем xmpp4r-simple, ошибки которого были замечены <a href="http://blog.lukmus.ru/2011/08/12/xmpp4rxmpp4r-simple-uchim-russkomu/">тут</a> и <a href="http://blog.lukmus.ru/2011/08/12/xmpp4r-simple-na-ruby-1-9-2/">тут</a>.</p>
<p><meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2014/08/pYVHBrs3T60.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2014/08/22/add_delivery_method/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>установка ruby 2.0, rails 4, nginx+passenger</title>
		<link>http://blog.lukmus.ru/2013/10/05/ustanovka-ruby-2-0-rails-4-nginxpassenger/</link>
		<comments>http://blog.lukmus.ru/2013/10/05/ustanovka-ruby-2-0-rails-4-nginxpassenger/#comments</comments>
		<pubDate>Sat, 05 Oct 2013 10:33:56 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[ruby & ruby on rails]]></category>
		<category><![CDATA[настройка и установка]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[passenger]]></category>
		<category><![CDATA[ruby 2.0]]></category>
		<category><![CDATA[ruby on rails 4]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=2105</guid>
		<description><![CDATA[Установка Ruby 2.0 через RVM и Rails4+Passenger+Nginx практически ни чем не отличается от аналогичной ситуацией с Rails 3, однако я опишу весь процесс просто для того, чтобы каждый раз не искать новый сайт RVM. установка ruby 2.0 Тут будет все практически тоже самое, что и для Ruby 1.9 и Rails 3, измениться практически только команда [...]]]></description>
			<content:encoded><![CDATA[<p>Установка Ruby 2.0 через RVM и Rails4+Passenger+Nginx практически ни чем не отличается от аналогичной ситуацией с Rails 3, однако я опишу весь процесс просто для того, чтобы каждый раз не искать новый сайт RVM.<br />
<img src="http://blog.lukmus.ru/wp-content/uploads/2013/10/PngNgt4U5MM.jpg" alt="" title="Rails Girls" width="517" height="550" class="alignnone size-full wp-image-2112" /><br />
<span id="more-2105"></span></p>
<h2>установка ruby 2.0</h2>
<p>Тут будет все практически тоже самое, что и для <a href='http://blog.lukmus.ru/?p=985'>Ruby 1.9 и Rails 3</a>, измениться практически только команда установки самой RVM.</p>
<p>Итак, для начала надо установить Git.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666;"># </span><span style="color: #c20cb9; font-weight: bold;">yum install</span> <span style="color: #c20cb9; font-weight: bold;">git</span> <span style="color: #660033;">-y</span></pre></td></tr></table></div>

<p>Далее надо установить RVM, как написано на <a href="https://rvm.io/" target="_blank" rel='nofollow'>офсайте</a> делаем:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666;"># </span>\curl <span style="color: #660033;">-L</span> https:<span style="color: #000000; font-weight: bold;">//</span>get.rvm.io <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">bash</span> <span style="color: #660033;">-s</span> stable</pre></td></tr></table></div>

<p>Теперь надо выйти из консоли и зайти обратно, после чего можно установить непосредственно сам Ruby 2.0:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># rvm -v</span>
&nbsp;
rvm 1.22.16 <span style="color: #7a0874; font-weight: bold;">&#40;</span>stable<span style="color: #7a0874; font-weight: bold;">&#41;</span> by Wayne E. Seguin <span style="color: #000000; font-weight: bold;">&lt;</span>wayneeseguin<span style="color: #000000; font-weight: bold;">@</span>gmail.com<span style="color: #000000; font-weight: bold;">&gt;</span>, Michal Papis <span style="color: #000000; font-weight: bold;">&lt;</span>mpapis<span style="color: #000000; font-weight: bold;">@</span>gmail.com<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>https:<span style="color: #000000; font-weight: bold;">//</span>rvm.io<span style="color: #000000; font-weight: bold;">/</span><span style="color: #7a0874; font-weight: bold;">&#93;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># rvm install 2.0</span></pre></td></tr></table></div>

<p>Когда Ruby 2.0 установлен, если необходимо можно поставить его используемым по умолчанию.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># rvm use 2.0 --default</span>
Using <span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>rvm<span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span>ruby-2.0.0-p247
<span style="color: #666666; font-style: italic;"># ruby -v</span>
ruby 2.0.0p247 <span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000;">2013</span>-06-<span style="color: #000000;">27</span> revision <span style="color: #000000;">41674</span><span style="color: #7a0874; font-weight: bold;">&#41;</span> <span style="color: #7a0874; font-weight: bold;">&#91;</span>i686-linux<span style="color: #7a0874; font-weight: bold;">&#93;</span></pre></td></tr></table></div>

<h2>установка rails 4</h2>
<p>Надо просто установить соответствующий gem.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># gem install rails</span>
<span style="color: #666666; font-style: italic;"># rails -v</span>
Rails 4.0.0</pre></td></tr></table></div>

<h2>установка nginx+passenger</h2>
<p>Установка Nginx+Passenger для Rails 4, точно такая же как и <a href='http://blog.lukmus.ru/?p=1106'>для Rails 3</a>.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># gem install passenger</span>
<span style="color: #666666; font-style: italic;"># passenger-install-nginx-module</span></pre></td></tr></table></div>

<p>Теперь осталось воспользоваться предоставленными Passenger&#8217;ом настройками и правильно сконфигурировать конфиг Nginx <code>/opt/nginx/conf/nginx.conf</code>.</p>
<p>p.s. честно говоря, этот пост написан по двум причинам: давно не писал и хотелось бы забить ключевик <strong>установка rails 4</strong>.<br />
<meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2013/10/PngNgt4U5MM.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2013/10/05/ustanovka-ruby-2-0-rails-4-nginxpassenger/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
