<?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 1.8</title>
	<atom:link href="http://blog.lukmus.ru/tag/ruby-1-8/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>
	</channel>
</rss>
