<?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; settingslogic</title>
	<atom:link href="http://blog.lukmus.ru/tag/settingslogic/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-приложения</title>
		<link>http://blog.lukmus.ru/2012/02/08/sobstvennaya-konfiguratsiya-svoi-optsii-ra/</link>
		<comments>http://blog.lukmus.ru/2012/02/08/sobstvennaya-konfiguratsiya-svoi-optsii-ra/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 17:52:29 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[ruby & ruby on rails]]></category>
		<category><![CDATA[ruby on rails 3]]></category>
		<category><![CDATA[settingslogic]]></category>
		<category><![CDATA[YML]]></category>
		<category><![CDATA[конфигурация]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=1235</guid>
		<description><![CDATA[В названии я имею ввиду не настройку Rails, которая в config/application.rb и некоторых других файлах, а место, где следует хранить конфигурацию приложения с опциями типа &#8216;количество новостей на странице&#8217; или &#8216;количество символов в отрывке текста на странице списка новостей&#8217; итд, короче говоря, свои собственные конкретные для данного приложения настройки. Хранить некоторые из таких настроек в [...]]]></description>
			<content:encoded><![CDATA[<p>В названии я имею ввиду не настройку Rails, которая в config/application.rb и некоторых других файлах, а место, где следует хранить конфигурацию приложения с опциями типа &#8216;количество новостей на странице&#8217; или &#8216;количество символов в отрывке текста на странице списка новостей&#8217; итд, короче говоря, свои собственные конкретные для данного приложения настройки.<br />
<img class="aligncenter size-full wp-image-1236" title="p_16_6_6" src="http://blog.lukmus.ru/wp-content/uploads/2012/02/p_16_6_6.jpg" alt="" width="517" height="321" /><span id="more-1235"></span><br />
Хранить некоторые из таких настроек в БД не вариант, т.к., несмотря на все кэширование запросов и прочих штук, если настройка очень часто используется есть вариант уронить сервер БД, еще раз подчеркну, что это далеко не всегда и далеко не для всех опций. Вообщем, в местах где это возможно я храню конфигурацию в файле и в не простом файле, а YML.<br />
Для таких интересных целей я использую гем <a rel="nofollow" href="https://github.com/binarylogic/settingslogic" target="_blank">settingslogic</a>. Дальше не будет ничего другого как перевод текста по ссылке выше.</p>
<h3>установка</h3>
<p>Ничего нового. Кидаем в Gemfile:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="" style="font-family:monospace;">gem 'settingslogic'</pre></td></tr></table></div>

<p>и бандлим:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="" style="font-family:monospace;">bundle install</pre></td></tr></table></div>

<p>Теперь создаем файл <code>app/models/settings.rb</code>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#9966CC; font-weight:bold;">class</span> Settings <span style="color:#006600; font-weight:bold;">&lt;</span> Settingslogic
  source <span style="color:#996600;">&quot;#{Rails.root}/config/application.yml&quot;</span>
  namespace Rails.<span style="color:#9900CC;">env</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<h3>где записывать настройки</h3>
<p>Создаем файл <code>config/application.yml</code> и в соответствии с форматом YML прописываем настройки, получиться что-то типа (взял с вышеуказанной офстранице гема):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</pre></td><td class="code"><pre class="yml" style="font-family:monospace;">defaults: &amp;defaults
  cool:
    saweet: nested settings
  neat_setting: 24
  awesome_setting: &lt;%= &quot;Did you know 5 + 5 = #{5 + 5}?&quot; %&gt;
&nbsp;
development:
  &lt;&lt;: *defaults
  neat_setting: 800
&nbsp;
test:
  &lt;&lt;: *defaults
&nbsp;
production:
  &lt;&lt;: *defaults</pre></td></tr></table></div>

<h3>как использовать в приложении</h3>
<p>В представлении, например, использовать настройку можно так:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;"><span style="color:#006600; font-weight:bold;">&lt;%</span>=Settings.<span style="color:#9900CC;">neat_setting</span><span style="color:#006600; font-weight:bold;">%&gt;</span> # 800 - development, 24 - остальные
<span style="color:#006600; font-weight:bold;">&lt;%</span>=Settings.<span style="color:#9900CC;">cool</span>.<span style="color:#9900CC;">saweet</span><span style="color:#006600; font-weight:bold;">%&gt;</span> # &quot;nested settings&quot;</pre></td></tr></table></div>

<p>Ну и так далее. Короче, весело и вкусно.<br />
<meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2012/02/p_16_6_6.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2012/02/08/sobstvennaya-konfiguratsiya-svoi-optsii-ra/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
