<?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; rake</title>
	<atom:link href="http://blog.lukmus.ru/tag/rake/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. переход с sqlite3 на mysql</title>
		<link>http://blog.lukmus.ru/2011/10/24/rails-3-perehod-s-sqlite3-na-mysql/</link>
		<comments>http://blog.lukmus.ru/2011/10/24/rails-3-perehod-s-sqlite3-na-mysql/#comments</comments>
		<pubDate>Mon, 24 Oct 2011 02:03:45 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[ruby & ruby on rails]]></category>
		<category><![CDATA[fedora]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[rake]]></category>
		<category><![CDATA[ROR]]></category>
		<category><![CDATA[ROR 3]]></category>
		<category><![CDATA[ruby on rails 3]]></category>
		<category><![CDATA[sqlite]]></category>
		<category><![CDATA[yaml_db]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=1089</guid>
		<description><![CDATA[Существует гипотеза, что MySQL гораздо быстрее SQLite в многопользовательском приложении. Собственно, гипотеза подтверждается на всех тестах, что я видел, а также на моем собственном опыте. Подобный холивар, о том у кого длинее что быстрее можно слегкостью найти на Хабре. Весь описанный дальше процесс был проделан на Fedora 14.1 x64, однако, даю клык, что все тоже [...]]]></description>
			<content:encoded><![CDATA[<p>Существует гипотеза, что MySQL гораздо быстрее SQLite в многопользовательском приложении. Собственно, гипотеза подтверждается на всех тестах, что я видел, а также на моем собственном опыте. Подобный холивар, о том <span style="text-decoration: line-through;">у кого длинее</span> что быстрее можно слегкостью найти на Хабре. Весь описанный дальше процесс был проделан на Fedora 14.1 x64, однако, даю клык, что все тоже самое будет работать на федоре старше 11.<br />
<img class="aligncenter size-full wp-image-1090" title="post-3714-1248825341" src="http://blog.lukmus.ru/wp-content/uploads/2011/10/post-3714-1248825341.jpg" alt="" width="517" height="555" /><span id="more-1089"></span><br />
Далее я буду описывать все в том порядке, в каком делаю это я. Также я считаю, что именно такой порядок наиболее удобен для миграции с SQLite3 на MySQL.</p>
<h2>экспорт БД с sqlite3</h2>
<p>Прежде всего надо как-то сдампить старую БД на SQLite и хотелось бы это сделать без писания дополнительных скриптов. Для этого делаем нижеизложенное.<br />
Закидываем в Gemfile следующую строку:</p>

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

<p>И далее установим этот гем через bundle:</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: #7a0874; font-weight: bold;">cd</span> rails_app <span style="color: #000000; font-weight: bold;">&amp;&amp;</span> bundle <span style="color: #c20cb9; font-weight: bold;">install</span></pre></td></tr></table></div>

<p>Этот гем даст некоторые новые rake&#8217;и для работы с БД:</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
16
17
18
19
20
21
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">$ rake <span style="color: #660033;">-T</span>
...
rake db:create          <span style="color: #666666; font-style: italic;"># Create the database from ...</span>
rake db:data:dump       <span style="color: #666666; font-style: italic;"># Dump contents of database ...</span>
rake db:data:dump_dir   <span style="color: #666666; font-style: italic;"># Dump contents of database ...</span>
rake db:data:load       <span style="color: #666666; font-style: italic;"># Load contents of db/data...</span>
rake db:data:load_dir   <span style="color: #666666; font-style: italic;"># Load contents of db/data_dir ...</span>
rake db:drop            <span style="color: #666666; font-style: italic;"># Drops the database for the ...</span>
rake db:dump            <span style="color: #666666; font-style: italic;"># Dump schema and data to db/...</span>
rake db:fixtures:load   <span style="color: #666666; font-style: italic;"># Load fixtures into the current...</span>
rake db:load            <span style="color: #666666; font-style: italic;"># Load schema and data from ...</span>
rake db:migrate         <span style="color: #666666; font-style: italic;"># Migrate the database (options:...</span>
rake db:migrate:status  <span style="color: #666666; font-style: italic;"># Display status of migrations</span>
rake db:rollback        <span style="color: #666666; font-style: italic;"># Rolls the schema back to ...</span>
rake db:schema:dump     <span style="color: #666666; font-style: italic;"># Create a db/schema.rb file ...</span>
rake db:schema:load     <span style="color: #666666; font-style: italic;"># Load a schema.rb file into...</span>
rake db:seed            <span style="color: #666666; font-style: italic;"># Load the seed data from...</span>
rake db:setup           <span style="color: #666666; font-style: italic;"># Create the database, load...</span>
rake db:structure:dump  <span style="color: #666666; font-style: italic;"># Dump the database structure...</span>
rake db:version
...</pre></td></tr></table></div>

<p>Далее нижеприведенной командой экспортируем схему и содержание БД в <code>db/data.yml</code>.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666;">$ </span>rake db:dump</pre></td></tr></table></div>

<p>Если БД слишком разрослась, можно попробывать вариант с <code>rake db:data:dump_dir</code>.</p>
<h2>поднимаем и настраиваем MySQL</h2>
<h3>MySQL</h3>
<p>Сразу же устанавливаем пакеты:</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> mysql mysql-server mysql-devel ruby-mysql <span style="color: #660033;">-y</span></pre></td></tr></table></div>

<p>Далее прописываем во все тот же <code>Gemfile</code>:</p>

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

<p>И опять бандлим:</p>

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

<p>Стартуем сервер MySQL.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666;"># </span>service mysqld start</pre></td></tr></table></div>

<p>Заходим под рутом в MySQL:</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;">mysql <span style="color: #660033;">-uroot</span> <span style="color: #660033;">-p</span></pre></td></tr></table></div>

<p>Если до этого руту был задан пароль, то его надо будет ввести, если это первый заход рута, то пароль пустой.<br />
А теперь создаем базу</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="mysql" style="font-family:monospace;">mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">CREATE</span> <span style="color: #990099; font-weight: bold;">DATABASE</span> railsdb CHARACTER <span style="color: #990099; font-weight: bold;">SET</span> utf8 <span style="color: #CC0099; font-weight: bold;">COLLATE</span> utf8_general_ci<span style="color: #000033;">;</span></pre></td></tr></table></div>

<p>и пользователя, попутно назначая ему права на эту БД.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="mysql" style="font-family:monospace;">mysql<span style="color: #CC0099;">&gt;</span> <span style="color: #990099; font-weight: bold;">GRANT</span> <span style="color: #990099; font-weight: bold;">ALL</span> <span style="color: #990099; font-weight: bold;">PRIVILEGES</span> <span style="color: #990099; font-weight: bold;">ON</span> railsdb.<span style="color: #CC0099;">*</span> <span style="color: #990099; font-weight: bold;">TO</span> <span style="color: #008000;">'railsuser'</span>@<span style="color: #008000;">'localhost'</span> IDENTIFIED BY <span style="color: #008000;">'railspass'</span> <span style="color: #990099; font-weight: bold;">WITH</span> <span style="color: #990099; font-weight: bold;">GRANT</span> <span style="color: #990099; font-weight: bold;">OPTION</span><span style="color: #000033;">;</span></pre></td></tr></table></div>

<p>Команда выше дает права пользователю <code>railsuser</code> с паролем <code>railspass</code> на полный доступ к БД <code>railsdb</code> c локального хоста. Подробнее о правах и как их назначить читаем на <a rel="nofollow" href="http://dev.mysql.com/doc/" target="_blank">оффсайте</a>.</p>
<h3>настройка rails-приложения</h3>
<p>Открываем config/database.yml и заменяем настройки БД нужной секции на подобные (в моем случае это development):</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="yml" style="font-family:monospace;">development:
  adapter: mysql2
  encoding: utf8
  reconnect: false
  database: railsdb
  pool: 5
  username: railsuser
  password: railspass
  host: localhost</pre></td></tr></table></div>

<p>Хочу предупредить, что табуляция перед параметрами, видимо, очень важна т.к. без этих табов сервер не стартанул, а с ними запустился на ура.<br />
Теперь импортируем схему и данные в БД.</p>

<div class="wp_syntax"><table><tr><td class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666;">$ </span>rake db:load</pre></td></tr></table></div>

<p>Стоит помнить, что команда загрузки дампа может быть и немного иной, все зависит от того какую команду экспорта дампа выбирали вы в на первом шаге этого поста. Ну вот и все.<br />
<meta property="og:image" content="http://blog.lukmus.ru/wp-content/uploads/2011/10/post-3714-1248825341.jpg" /></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2011/10/24/rails-3-perehod-s-sqlite3-na-mysql/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>задания cron в rails 3 через rake</title>
		<link>http://blog.lukmus.ru/2011/01/30/zadaniya-cron-v-rails-3-cherez-rake/</link>
		<comments>http://blog.lukmus.ru/2011/01/30/zadaniya-cron-v-rails-3-cherez-rake/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 23:34:34 +0000</pubDate>
		<dc:creator>lukmus</dc:creator>
				<category><![CDATA[ruby & ruby on rails]]></category>
		<category><![CDATA[cron]]></category>
		<category><![CDATA[desc]]></category>
		<category><![CDATA[namespace]]></category>
		<category><![CDATA[rake]]></category>
		<category><![CDATA[ruby on rails 3]]></category>
		<category><![CDATA[task]]></category>

		<guid isPermaLink="false">http://blog.lukmus.ru/?p=915</guid>
		<description><![CDATA[В этой статье, я персонально для себя, опишу метод запуска задания cron в Ruby on Rails 3 через rake. Об этом способе я узнал из  комментария к статье задания cron в ROR 3, который написал Леонид Шевцов, приведя ссылку на railscasts.com. На railscasts есть видео на английском показывающее как запускать Ruby-код, использующий все преймущества Active [...]]]></description>
			<content:encoded><![CDATA[<p>В этой статье, я персонально для себя, опишу метод запуска задания cron в Ruby on Rails 3 через rake. Об этом способе я узнал из  комментария к статье <a href="http://blog.lukmus.ru/?p=894" target="_blank">задания cron в ROR 3</a>, который написал <a rel="nofollow" href="http://leonid.shevtsov.me/" target="_blank">Леонид Шевцов</a>, приведя ссылку на <a rel="nofollow" href="http://railscasts.com/episodes/66-custom-rake-tasks" target="_blank">railscasts.com</a>.<br />
<a href="http://blog.lukmus.ru/wp-content/uploads/2011/01/20100209-for-the-party.png"><img class="aligncenter size-full wp-image-917" title="20100209-for-the-party" src="http://blog.lukmus.ru/wp-content/uploads/2011/01/20100209-for-the-party.png" alt="" width="517" height="337" /></a><span id="more-915"></span><br />
На railscasts есть видео на английском показывающее как запускать Ruby-код, использующий все преймущества Active Records, а точнее работающий в среде вашего rails-приложения. Я же хочу просто резюмировать это видео и привести его в текстовый вид, заодно проверив все это на собственном опыте.</p>
<h3>запись и запуск кода</h3>
<p>Начнем с того, что если вы наберете команду <code>$ rake -T</code>, то сможете увидеть список и описание всех команд rake.<br />
Теперь подробнее. Заходим в <code>rails_app/lib/tasks/</code> и создаем файл, где собственно и будет наш код &#8211; <code>rails_app/lib/tasks/crontask.rake</code>.<br />
Открываем его и пишем для начала так:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">task <span style="color:#ff3333; font-weight:bold;">:greet</span> <span style="color:#9966CC; font-weight:bold;">do</span>
	<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'Hello world!'</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>Возвращаемся в консоль:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">$ rake greet
<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>myusername<span style="color: #000000; font-weight: bold;">/</span>rails3<span style="color: #000000; font-weight: bold;">/</span>rails_app<span style="color: #7a0874; font-weight: bold;">&#41;</span>
Hello world<span style="color: #000000; font-weight: bold;">!</span></pre></td></tr></table></div>

<p>В это файл можно прописать сколь угодно много таких task&#8217;ов и каждый из них будет запускатся согласно <code>rake &lt;task_name&gt;</code>.</p>
<h3>цепочка заданий</h3>
<p>Усложним пример, добавив в файл еще одна задание &#8211; <code>:ask</code>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">task <span style="color:#ff3333; font-weight:bold;">:greet</span> <span style="color:#9966CC; font-weight:bold;">do</span>
	<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'Hello world!'</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
task <span style="color:#ff3333; font-weight:bold;">:ask</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:greet</span> <span style="color:#9966CC; font-weight:bold;">do</span>
	<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">'How are u?!'</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>Теперь по вызову задания <code>ask</code> первоначально будет запускатся цепь: <code>greet-&gt;ask</code>:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">$ rake ask
<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>myusername<span style="color: #000000; font-weight: bold;">/</span>rails3<span style="color: #000000; font-weight: bold;">/</span>rails_app<span style="color: #7a0874; font-weight: bold;">&#41;</span>
Hello world<span style="color: #000000; font-weight: bold;">!</span>
How are u?<span style="color: #000000; font-weight: bold;">!</span></pre></td></tr></table></div>

<h3>запуск в среде rails-приложения</h3>
<p>Если попытаться использовать в задании в таком виде какие-нибудь ресурсы среды вашего приложения, а иначе говоря обращаться к БД через Active Records, то ничего не получится.<br />
Например:</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;">task <span style="color:#ff3333; font-weight:bold;">:first_nah</span> <span style="color:#9966CC; font-weight:bold;">do</span>
	product=Product.<span style="color:#9900CC;">first</span>
	<span style="color:#CC0066; font-weight:bold;">puts</span> product.<span style="color:#9900CC;">title</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>


<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">$ rake first_nah
<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000; font-weight: bold;">in</span>  <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>myusername<span style="color: #000000; font-weight: bold;">/</span>rails3<span style="color: #000000; font-weight: bold;">/</span>rails_app<span style="color: #7a0874; font-weight: bold;">&#41;</span>
rake aborted<span style="color: #000000; font-weight: bold;">!</span>
uninitialized constant Product</pre></td></tr></table></div>

<p>Чтобы все было четко делаем по логике &#8216;запуска цепочки&#8217; т.е. если нам нужна среда &#8211; запустим среду:</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;">task <span style="color:#ff3333; font-weight:bold;">:nah_first</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:environment</span> <span style="color:#9966CC; font-weight:bold;">do</span>
	product=Product.<span style="color:#9900CC;">first</span>
	<span style="color:#CC0066; font-weight:bold;">puts</span> product.<span style="color:#9900CC;">title</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<h3>пространство имен</h3>
<p>Допустим есть несколько заданий имеющих непосредственное отношение друг к другу, быть может они даже имеют схожие имена.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">task <span style="color:#ff3333; font-weight:bold;">:nah_first</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:environment</span> <span style="color:#9966CC; font-weight:bold;">do</span>
	product=Product.<span style="color:#9900CC;">first</span>
	<span style="color:#CC0066; font-weight:bold;">puts</span> product.<span style="color:#9900CC;">title</span>
<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
task <span style="color:#ff3333; font-weight:bold;">:nah_last</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:environment</span> <span style="color:#9966CC; font-weight:bold;">do</span>
	product=Product.<span style="color:#9900CC;">last</span>
	<span style="color:#CC0066; font-weight:bold;">puts</span> product.<span style="color:#9900CC;">title</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>В таком случае их можно запихнуть в одну группу, пространство имен.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">namespace <span style="color:#ff3333; font-weight:bold;">:nah</span> <span style="color:#9966CC; font-weight:bold;">do</span>
	task <span style="color:#ff3333; font-weight:bold;">:first</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:environment</span> <span style="color:#9966CC; font-weight:bold;">do</span>
		product=Product.<span style="color:#9900CC;">first</span>
		<span style="color:#CC0066; font-weight:bold;">puts</span> product.<span style="color:#9900CC;">title</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
	task <span style="color:#ff3333; font-weight:bold;">:last</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:environment</span> <span style="color:#9966CC; font-weight:bold;">do</span>
		product=Product.<span style="color:#9900CC;">last</span>
		<span style="color:#CC0066; font-weight:bold;">puts</span> product.<span style="color:#9900CC;">title</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>В консоли:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">$ rake nah:last
<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>myusername<span style="color: #000000; font-weight: bold;">/</span>rails3<span style="color: #000000; font-weight: bold;">/</span>rails_app<span style="color: #7a0874; font-weight: bold;">&#41;</span>
Last_product
$ rake nah:first
<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>myusername<span style="color: #000000; font-weight: bold;">/</span>rails3<span style="color: #000000; font-weight: bold;">/</span>rails_app<span style="color: #7a0874; font-weight: bold;">&#41;</span>
First_product</pre></td></tr></table></div>

<h3>группы заданий</h3>
<p>Если не хотите напрягаться и запускать каждое задание новой командой, можно объединить задания в группу.</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;">namespace <span style="color:#ff3333; font-weight:bold;">:nah</span> <span style="color:#9966CC; font-weight:bold;">do</span>
        <span style="color:#008000; font-style:italic;">#код заданий :first и :last</span>
	task <span style="color:#ff3333; font-weight:bold;">:all</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:first</span>,:last<span style="color:#006600; font-weight:bold;">&#93;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>В консоли:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
</pre></td><td class="code"><pre class="bash" style="font-family:monospace;">$ rake nah:all
<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>myusername<span style="color: #000000; font-weight: bold;">/</span>rails3<span style="color: #000000; font-weight: bold;">/</span>rails_app<span style="color: #7a0874; font-weight: bold;">&#41;</span>
First_product
Last_product</pre></td></tr></table></div>

<h3>методы в rake</h3>
<p>Пусть в заданиях повторяется один и тот же код, допустим это запрос БД. В таком случае целесообразно прописать его один раз в метод.</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">namespace <span style="color:#ff3333; font-weight:bold;">:shop</span> <span style="color:#9966CC; font-weight:bold;">do</span>
	task <span style="color:#ff3333; font-weight:bold;">:product</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:environment</span> <span style="color:#9966CC; font-weight:bold;">do</span>
		product=Product.<span style="color:#9900CC;">where</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'id &gt; ?'</span>,<span style="color:#006666;">20</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">first</span>
		<span style="color:#CC0066; font-weight:bold;">puts</span> product.<span style="color:#9900CC;">title</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
	task <span style="color:#ff3333; font-weight:bold;">:categor</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:environment</span> <span style="color:#9966CC; font-weight:bold;">do</span>
		cat=Categor.<span style="color:#9900CC;">where</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'id &gt; ?'</span>,<span style="color:#006666;">20</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">first</span>
		<span style="color:#CC0066; font-weight:bold;">puts</span> cat.<span style="color:#9900CC;">title</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
	task <span style="color:#ff3333; font-weight:bold;">:all</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:product</span>,:categor<span style="color:#006600; font-weight:bold;">&#93;</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<p>В таком случае лучше сделать метод, который будет выполнять этот запрос.</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
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">namespace <span style="color:#ff3333; font-weight:bold;">:shop</span> <span style="color:#9966CC; font-weight:bold;">do</span>
	task <span style="color:#ff3333; font-weight:bold;">:product</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:environment</span> <span style="color:#9966CC; font-weight:bold;">do</span> 
		<span style="color:#CC0066; font-weight:bold;">puts</span> echo<span style="color:#006600; font-weight:bold;">&#40;</span>Product<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">title</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
	task <span style="color:#ff3333; font-weight:bold;">:categor</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:environment</span> <span style="color:#9966CC; font-weight:bold;">do</span> 
		<span style="color:#CC0066; font-weight:bold;">puts</span> echo<span style="color:#006600; font-weight:bold;">&#40;</span>Categor<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">title</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
	task <span style="color:#ff3333; font-weight:bold;">:all</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:product</span>,:categor<span style="color:#006600; font-weight:bold;">&#93;</span>
&nbsp;
	<span style="color:#9966CC; font-weight:bold;">def</span> echo <span style="color:#006600; font-weight:bold;">&#40;</span>model_class<span style="color:#006600; font-weight:bold;">&#41;</span>
		model_class.<span style="color:#9900CC;">where</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'id &gt; ?'</span>,<span style="color:#006666;">20</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">first</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
<span style="color:#9966CC; font-weight:bold;">end</span></pre></td></tr></table></div>

<h3>описание заданий</h3>
<p>Чтобы не путаться в заданиях, их можно кратко описать.</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
16
17
18
</pre></td><td class="code"><pre class="ruby" style="font-family:monospace;">namespace <span style="color:#ff3333; font-weight:bold;">:shop</span> <span style="color:#9966CC; font-weight:bold;">do</span>
	desc <span style="color:#996600;">'Show first product, which id &gt; 20'</span>
	task <span style="color:#ff3333; font-weight:bold;">:product</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:environment</span> <span style="color:#9966CC; font-weight:bold;">do</span>
		<span style="color:#CC0066; font-weight:bold;">puts</span> echo<span style="color:#006600; font-weight:bold;">&#40;</span>Product<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">title</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
	desc <span style="color:#996600;">'Show first categor, which id &gt; 20'</span>
	task <span style="color:#ff3333; font-weight:bold;">:categor</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#ff3333; font-weight:bold;">:environment</span> <span style="color:#9966CC; font-weight:bold;">do</span>
		<span style="color:#CC0066; font-weight:bold;">puts</span> echo<span style="color:#006600; font-weight:bold;">&#40;</span>Categor<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">title</span>
	<span style="color:#9966CC; font-weight:bold;">end</span>
&nbsp;
        desc <span style="color:#996600;">'Show first product and category'</span>
	task <span style="color:#ff3333; font-weight:bold;">:all</span> <span style="color:#006600; font-weight:bold;">=&gt;</span> <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#ff3333; font-weight:bold;">:product</span>,:categor<span style="color:#006600; font-weight:bold;">&#93;</span>
&nbsp;
	<span style="color:#9966CC; font-weight:bold;">def</span> echo <span style="color:#006600; font-weight:bold;">&#40;</span>model_class<span style="color:#006600; font-weight:bold;">&#41;</span>
		model_class.<span style="color:#9900CC;">where</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">'id &gt; ?'</span>,<span style="color:#006666;">20</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">first</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>Теперь в консоли можно увидеть справку по командам.</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="bash" style="font-family:monospace;">$ rake <span style="color: #660033;">-T</span>
<span style="color: #7a0874; font-weight: bold;">&#40;</span><span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">/</span>home<span style="color: #000000; font-weight: bold;">/</span>myusername<span style="color: #000000; font-weight: bold;">/</span>rails3<span style="color: #000000; font-weight: bold;">/</span>rails_app<span style="color: #7a0874; font-weight: bold;">&#41;</span>
rake about              <span style="color: #666666; font-style: italic;"># List versions of all Rails...</span>
...
rake shop:all           <span style="color: #666666; font-style: italic;"># Show first product and categor</span>
rake shop:categor       <span style="color: #666666; font-style: italic;"># Show first categor, which id &gt; 20</span>
rake shop:product       <span style="color: #666666; font-style: italic;"># Show first product, which id &gt; 20</span></pre></td></tr></table></div>

]]></content:encoded>
			<wfw:commentRss>http://blog.lukmus.ru/2011/01/30/zadaniya-cron-v-rails-3-cherez-rake/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
