<?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; REE</title>
	<atom:link href="http://blog.lukmus.ru/tag/ree/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.1.x для REE</title>
		<link>http://blog.lukmus.ru/2011/12/16/hesh-nesovmestimost-rails-3-1-x-dlya-ree/</link>
		<comments>http://blog.lukmus.ru/2011/12/16/hesh-nesovmestimost-rails-3-1-x-dlya-ree/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 21:48:53 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[ruby & ruby on rails]]></category>
		<category><![CDATA[REE]]></category>
		<category><![CDATA[ruby 1.8]]></category>
		<category><![CDATA[ruby 1.9]]></category>
		<category><![CDATA[ruby on rails 3]]></category>
		<category><![CDATA[хэш]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=1152</guid>
		<description><![CDATA[Судьба заставила вернуться к REE, несмотря на мой последний комментарий. Так вот c приложением написанным на рельсах версии равной или больше 3.1.x при запуске его на REE может возникнуть ошибка с хэшами. Ошибка имеет следующий вид: $ rails s =&#62; Booting WEBrick =&#62; Rails 3.1.1 application starting in development on http://0.0.0.0:3000 =&#62; Call with -d [...]]]></description>
			<content:encoded><![CDATA[<p>Судьба заставила вернуться к REE, несмотря на мой <a href="http://blog.lukmus.ru/?p=1130&amp;cpage=1#comment-6232">последний комментарий</a>. Так вот c приложением написанным на рельсах версии равной или больше 3.1.x при запуске его на REE может возникнуть ошибка с хэшами.<br />
<img class="aligncenter size-full wp-image-1157" title="хэш" src="http://blog.lukmus.ru/wp-content/uploads/2011/12/303222297.jpg" alt="" width="517" height="310" /><span id="more-1152"></span><br />
Ошибка имеет следующий вид:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">$ rails s
=<span style="color: #000000; font-weight: bold;">&gt;</span> Booting WEBrick
=<span style="color: #000000; font-weight: bold;">&gt;</span> Rails 3.1.1 application starting <span style="color: #000000; font-weight: bold;">in</span> development on http:<span style="color: #000000; font-weight: bold;">//</span>0.0.0.0:<span style="color: #000000;">3000</span>
=<span style="color: #000000; font-weight: bold;">&gt;</span> Call with <span style="color: #660033;">-d</span> to detach
=<span style="color: #000000; font-weight: bold;">&gt;</span> Ctrl-C to shutdown server
Exiting
<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>lib<span style="color: #000000; font-weight: bold;">/</span>ruby<span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1.8</span><span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span>activesupport-3.1.1<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>active_support<span style="color: #000000; font-weight: bold;">/</span>dependencies.rb:<span style="color: #000000;">235</span>:in <span style="color: #000000; font-weight: bold;">`</span>load<span style="color: #ff0000;">': &lt;
path_to_app&gt;/config/initializers/session_store.rb:3:
syntax error, unexpected '</span>:<span style="color: #ff0000;">', expecting $end (SyntaxError)
...sion_store :cookie_store, key: '</span>_<span style="color: #000000; font-weight: bold;">&lt;</span>app<span style="color: #000000; font-weight: bold;">&gt;</span>_session<span style="color: #ff0000;">'
                              ^
        from /usr/local/lib/ruby/gems/1.8/gems/activesupport-3.1.1/lib/active_support/dependencies.rb:235:in `load'</span>
        from <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>lib<span style="color: #000000; font-weight: bold;">/</span>ruby<span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span><span style="color: #000000;">1.8</span><span style="color: #000000; font-weight: bold;">/</span>gems<span style="color: #000000; font-weight: bold;">/</span>activesupport-3.1.1<span style="color: #000000; font-weight: bold;">/</span>lib<span style="color: #000000; font-weight: bold;">/</span>active_support<span style="color: #000000; font-weight: bold;">/</span>dependencies.rb:<span style="color: #000000;">223</span>:in <span style="color: #000000; font-weight: bold;">`</span>load_dependency<span style="color: #ff0000;">'
...</span></pre></td></tr></table></div>

<p>И если открыть тот самый файл, где возникает ошибка, <code>config/initializers/session_store.rb</code>, то в 3-ей строке можно увидеть, что-то типа:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#6666ff; font-weight:bold;">App::Application</span>.<span style="color:#9900CC;">config</span>.<span style="color:#9900CC;">session_store</span> <span style="color:#ff3333; font-weight:bold;">:cookie_store</span>, key: <span style="color:#996600;">'_app_session'</span></pre></td></tr></table></div>

<p>Если вдруг кто не знает, то запись вида</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="ruby" style="font-family:monospace;">a=<span style="color:#006600; font-weight:bold;">&#123;</span>one: <span style="color:#006666;">1</span>, two: <span style="color:#006666;">2</span>, three: <span style="color:#006666;">3</span><span style="color:#006600; font-weight:bold;">&#125;</span></pre></td></tr></table></div>

<p>в Ruby 1.9.x обозначает хэш, аналогичный</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="ruby" style="font-family:monospace;">a=<span style="color:#006600; font-weight:bold;">&#123;</span>:one<span style="color:#006600; font-weight:bold;">=&gt;</span><span style="color:#006666;">1</span>, <span style="color:#ff3333; font-weight:bold;">:two</span><span style="color:#006600; font-weight:bold;">=&gt;</span><span style="color:#006666;">2</span>, <span style="color:#ff3333; font-weight:bold;">:three</span><span style="color:#006600; font-weight:bold;">=&gt;</span><span style="color:#006666;">3</span><span style="color:#006600; font-weight:bold;">&#125;</span></pre></td></tr></table></div>

<p>Короче говоря это обычный хэш, только записанный в другом варианте. Ruby 1.8.x не понимает такую запись и выдает ошибку. А поскольку на данный момент REE это Ruby 1.8.7, то ошибке сам Бог велел вылетать.<br />
Исправить ее можно преобразовав все хэши нового вида к традиционному, т.е. например 3-я строка нашего файла должна выглядеть так:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#6666ff; font-weight:bold;">App::Application</span>.<span style="color:#9900CC;">config</span>.<span style="color:#9900CC;">session_store</span> <span style="color:#ff3333; font-weight:bold;">:cookie_store</span>, <span style="color:#ff3333; font-weight:bold;">:key</span><span style="color:#006600; font-weight:bold;">=&gt;</span><span style="color:#996600;">'_app_session'</span></pre></td></tr></table></div>

<p><code>config/initializers/session_store.rb</code> далеко не единственный файл где Rails 3.1.x формирует новый вид хэша. Исправлять также придеться <code>config/initializers/wrap_parameters.rb</code>, все контроллеры сделанные через <code>scaffold</code> и возможно еще что-то.<br />
Под новоиспеченным хэшем в скаффолдских контроллерах я подразумеваю такие экшены типа:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">def</span> index
  <span style="color:#0066ff; font-weight:bold;">@valutes</span> = Valute.<span style="color:#9900CC;">all</span>
&nbsp;
  respond_to <span style="color:#9966CC; font-weight:bold;">do</span> <span style="color:#006600; font-weight:bold;">|</span><span style="color:#CC0066; font-weight:bold;">format</span><span style="color:#006600; font-weight:bold;">|</span>
    <span style="color:#CC0066; font-weight:bold;">format</span>.<span style="color:#9900CC;">html</span> <span style="color:#008000; font-style:italic;"># index.html.erb</span>
    <span style="color:#CC0066; font-weight:bold;">format</span>.<span style="color:#9900CC;">json</span> <span style="color:#006600; font-weight:bold;">&#123;</span> render json: <span style="color:#0066ff; font-weight:bold;">@valutes</span> <span style="color:#006600; font-weight:bold;">&#125;</span>
  <span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>И вообще REE мне не нравиться.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2011/12/16/hesh-nesovmestimost-rails-3-1-x-dlya-ree/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<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>
