<?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; thin</title>
	<atom:link href="http://blog.lukmus.ru/tag/thin/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>rails 3 на REE+Thin</title>
		<link>http://blog.lukmus.ru/2011/11/21/reethin/</link>
		<comments>http://blog.lukmus.ru/2011/11/21/reethin/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 03:32:08 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[ruby & ruby on rails]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[REE]]></category>
		<category><![CDATA[ruby on rails 3]]></category>
		<category><![CDATA[RVM]]></category>
		<category><![CDATA[thin]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=1130</guid>
		<description><![CDATA[Послушав некоторых людей и прочитав некоторые статьи и комментарии я пришел к выводу, наверняка, очевидному для других, что REE быстрее и стабильнее Ruby 1.9.x. Собственно к этому выводу можно прийти просто расшифровав аббревиатуру REE как Ruby Enterprise Edition. А т.к. мой любимый iLukmus крайне нуждается в скорости, я решил перенести его на REE, а также, [...]]]></description>
			<content:encoded><![CDATA[<p>Послушав некоторых людей и прочитав некоторые статьи и комментарии я пришел к выводу, наверняка, очевидному для других, что REE быстрее и стабильнее Ruby 1.9.x. Собственно к этому выводу можно прийти просто расшифровав аббревиатуру REE как Ruby Enterprise Edition. А т.к. мой любимый iLukmus крайне нуждается в скорости, я решил перенести его на REE, а также, по совету <a href="http://blog.lukmus.ru/?p=1116&amp;cpage=1#comment-5528">Elfiel&#8217;а</a> сменил back-end сервер с Mongrel&#8217;а на Thin, который, говорят, по скорости может конкурировать с <a rel="nofollow" href="http://lenta.ru/news/2011/11/18/ftl/" target="_blank">мюонными нейтрино из CERN</a>.<br />
<img class="aligncenter size-full wp-image-1131" title="REE_Periodic_Table.34182441_std" src="http://blog.lukmus.ru/wp-content/uploads/2011/11/REE_Periodic_Table.34182441_std.png" alt="" width="517" height="305" /><span id="more-1130"></span></p>
<h2>установка REE через RVM</h2>
<p>Установка REE несколько отличается от <a href="http://blog.lukmus.ru/?p=985" target="_self">установки Ruby 1.9.2</a>, а точнее тем, что еще потребуется пакет <code>patch</code>.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># yum install git gcc gcc-c++ curl zlib zlib-devel -y
</span><span style="color: #666666; font-style: italic;"># yum install sqlite-devel.x86_64 openssl-devel -y
</span><span style="color: #666666; font-style: italic;"># yum install readline readline-devel &lt;strong&gt;patch.x86_64&lt;/strong&gt; -y</span></pre></td></tr></table></div>

<p>Теперь как обычно ставим сам RVM:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># bash &lt; &lt;(curl -s https://rvm.beginrescueend.com/install/rvm)</span></pre></td></tr></table></div>

<p>Теперь надо закрыть терминал/завершить сессию и снова открыть терминал/залогиниться, в противном случае bash не увидит RVM.<br />
Ставим REE и делаем его версией по умолчанию:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># rvm install ree
</span><span style="color: #666666; font-style: italic;"># rvm use ree --default
</span>$ ruby <span style="color: #339933;">-</span>v
ruby 1<span style="color: #339933;">.</span>8<span style="color: #339933;">.</span>7 <span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">2011</span><span style="color: #339933;">-</span><span style="color: #208080;">02</span><span style="color: #339933;">-</span><span style="color: #cc66cc;">18</span> patchlevel <span style="color: #cc66cc;">334</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#91;</span>x86_64<span style="color: #339933;">-</span>linux<span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>
MBARI <span style="color: #208080;">0x6770</span><span style="color: #339933;">,</span> Ruby Enterprise Edition <span style="color:#800080;">2011.03</span></pre></td></tr></table></div>

<p>Устанавливаем Rails (здесь на удивиление без приколов в отличии от Ruby 1.9.2):</p>

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

<p>Делаем тестовое приложение, заходим в ее директорию и бандлим:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">$ rails <span style="color: #000000; font-weight: bold;">new</span> Testapp <span style="color: #339933;">&amp;&amp;</span> cd Testapp
<span style="color: #666666; font-style: italic;"># bundle install</span></pre></td></tr></table></div>

<p>Пытаемся запустить:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">$ rails s</pre></td></tr></table></div>

<p>и если в ответ появляется ошибка:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #339933;">/</span>usr<span style="color: #339933;">/</span>local<span style="color: #339933;">/</span>rvm<span style="color: #339933;">/</span>gems<span style="color: #339933;">/</span>ree<span style="color: #339933;">-</span>1<span style="color: #339933;">.</span>8<span style="color: #339933;">.</span>7<span style="color: #339933;">-</span><span style="color:#800080;">2011.03</span><span style="color: #339933;">/</span>gems<span style="color: #339933;">/</span>execjs<span style="color: #339933;">-</span>1<span style="color: #339933;">.</span>2<span style="color: #339933;">.</span>9
<span style="color: #339933;">/</span>lib<span style="color: #339933;">/</span>execjs<span style="color: #339933;">/</span>runtimes<span style="color: #339933;">.</span>rb<span style="color: #339933;">:</span><span style="color: #cc66cc;">47</span><span style="color: #339933;">:</span>in `autodetect<span style="color: #0000ff;">': Could not find
a JavaScript runtime. See https://github.com/sstephenson
/execjs for a list of available runtimes.
(ExecJS::RuntimeUnavailable)</span></pre></td></tr></table></div>

<p>то дописываем в <code>Gemfile</code>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">gem <span style="color: #0000ff;">'execjs'</span>
gem <span style="color: #0000ff;">'therubyracer'</span></pre></td></tr></table></div>

<p>и опять бандлим.</p>
<h2>установка Thin</h2>
<p>Судя по диаграмме на <a rel="nofollow" href="http://code.macournoyer.com/thin/" target="_blank">офсайте Thin&#8217;а</a>, он по скорости превосходит все остальные back-end сервера Rails.<img style="float: left;" title="chart" src="http://blog.lukmus.ru/wp-content/uploads/2011/11/chart.png" alt="" width="350" height="150" /> Как говорит сам офсайт Thin это web-сервер, который &#8216;склеивает&#8217; 3 из лучших библиотеки Ruby в истории web&#8217;а. Что делает его самым безопасным, быстрым, стабильным и, разумеется, самым скромным web-сервером в этой и некоторых других галактиках.<br />
Устанавливается он просто:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># gem install thin</span></pre></td></tr></table></div>

<p>Далее, чтобы запустить, нужно зайти в директорию приложения, причем зайти надо именно в корень папки, а не так как это было с Mongrel&#8217;ом и Webrick&#8217;ом где попало.<br />
Такой командой запустится приложение в development&#8217;е на порте 3000, короче как обычно.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">$ thin start</pre></td></tr></table></div>

<p>Для промышленного запуска делаем:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">$ thin start <span style="color: #339933;">-</span>e production <span style="color: #339933;">-</span>p <span style="color: #339933;">&lt;</span>порт<span style="color: #339933;">&gt;</span> <span style="color: #339933;">-</span>d</pre></td></tr></table></div>

<p>Останавить его можно так:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">$ thin stop</pre></td></tr></table></div>

<h3>ошибка с версией rack</h3>
<p>Иногда, когда, например, приложение написано на Rails 3.0.x, а на сервере стоит Rails 3.1.x может вылететь ошибка с версией rack, типа этой (здесь для Ruby 1.9.2):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
</pre></td><td class="code"><pre class="php" style="font-family:monospace;">$ thin start
<span style="color: #339933;">&gt;&gt;</span> Using rack adapter
<span style="color: #339933;">/</span>usr<span style="color: #339933;">/</span>local<span style="color: #339933;">/</span>rvm<span style="color: #339933;">/</span>gems<span style="color: #339933;">/</span>ruby<span style="color: #339933;">-</span>1<span style="color: #339933;">.</span>9<span style="color: #339933;">.</span>2<span style="color: #339933;">-</span>p290<span style="color: #339933;">/</span>gems<span style="color: #339933;">/</span>bundler<span style="color: #339933;">-</span>1<span style="color: #339933;">.</span>0<span style="color: #339933;">.</span>18
<span style="color: #339933;">/</span>lib<span style="color: #339933;">/</span>bundler<span style="color: #339933;">/</span>runtime<span style="color: #339933;">.</span>rb<span style="color: #339933;">:</span><span style="color: #cc66cc;">31</span><span style="color: #339933;">:</span>in `block in setup<span style="color: #0000ff;">': You have 
already activated rack 1.3.2, but your Gemfile requires 
rack 1.2.3. Consider using bundle exec. 
(Gem::LoadError)</span></pre></td></tr></table></div>

<p>В такой ситуации мне помогло следующее:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;"># bundle update
</span>$ bundle <span style="color: #990000;">exec</span> thin start</pre></td></tr></table></div>

<p>P.S. Убедиться или разочаровться в стабильности, быстроте и прочих достоинствах Thin и REE можно глядя на <a href="http://ii.lukmus.ru">iLukmus</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2011/11/21/reethin/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
