<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6170579699711476291</id><updated>2024-09-06T17:57:25.788-07:00</updated><category term="ROR"/><category term="RubyOnRails"/><category term="PHP"/><category term="ООП"/><category term="Объекты"/><category term="CakePHP"/><category term="Ruby"/><category term="Введение"/><category term="Классы"/><category term="Mongrel"/><category term="OOP"/><category term="RubyGems"/><category term="WEBRrick"/><category term="fastthread"/><category term="Массивы"/><category term="Установка"/><title type='text'>Rails : From Newbie to Guru</title><subtitle type='html'>Эволюция чайника в кофеварку</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://railsbeginner.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6170579699711476291/posts/default'/><link rel='alternate' type='text/html' href='http://railsbeginner.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Юрий</name><uri>http://www.blogger.com/profile/06182394512783732961</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>8</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6170579699711476291.post-5034640289622977559</id><published>2007-08-04T07:51:00.000-07:00</published><updated>2007-08-04T20:17:19.287-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ROR"/><category scheme="http://www.blogger.com/atom/ns#" term="Ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="Классы"/><category scheme="http://www.blogger.com/atom/ns#" term="ООП"/><category scheme="http://www.blogger.com/atom/ns#" term="Объекты"/><title type='text'>Ruby : Методы классов</title><content type='html'>Когда необходима возможность использовать класс не создавая его объект на помощь приходят методы класса. Методы от инстанции отличаются прежде всего способом их определения:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;class Example&lt;br /&gt;def instMeth              # инстанция объекта&lt;br /&gt;end&lt;br /&gt;def Example.classMeth     # метод класса&lt;br /&gt;end&lt;br /&gt;end&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;В качестве примера работы методов:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;class Calc  &lt;br /&gt;  def Calc.showSumm(i,k)&lt;br /&gt;      return i + k;&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;Calc.showSumm(5,4) // 9&lt;br /&gt;&lt;/pre&gt;&lt;/code&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsbeginner.blogspot.com/feeds/5034640289622977559/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6170579699711476291/5034640289622977559' title='Комментарии: 2'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6170579699711476291/posts/default/5034640289622977559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6170579699711476291/posts/default/5034640289622977559'/><link rel='alternate' type='text/html' href='http://railsbeginner.blogspot.com/2007/08/ruby_5684.html' title='Ruby : Методы классов'/><author><name>Юрий</name><uri>http://www.blogger.com/profile/06182394512783732961</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6170579699711476291.post-7197586804257881079</id><published>2007-08-04T04:33:00.000-07:00</published><updated>2007-08-04T07:51:07.709-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Ruby"/><category scheme="http://www.blogger.com/atom/ns#" term="RubyOnRails"/><category scheme="http://www.blogger.com/atom/ns#" term="ООП"/><category scheme="http://www.blogger.com/atom/ns#" term="Объекты"/><title type='text'>Ruby : Объекты , атрибуты  и прочее</title><content type='html'>&lt;p&gt;Продолжаем тему ООП в Руби :).&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;class Song&lt;br /&gt;def initialize(name, artist, duration)&lt;br /&gt;  @name     = name&lt;br /&gt;  @artist   = artist&lt;br /&gt;  @duration = duration&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;У нас есть атрбитуты name , artist , duarion но использовать вне объекта или через другие объекты мы их не можешь, а конкретно прочитать либо изменить, что собственно приводит к бесполезности объекта в какой-то степени. Для того, чтобы сделать атрибут читаемым и редактируемым нам следует сделать так:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;class Song&lt;br /&gt;&lt;br /&gt;   attr_reader :name :artist :duration; # Разрешает чтение атрибута&lt;br /&gt;   attr_write :name :artist :duration; # Разрешает запись атрибута&lt;br /&gt;&lt;br /&gt;   def initialize(name, artist, duration)    &lt;br /&gt;   @name     = name&lt;br /&gt;   @artist   = artist&lt;br /&gt;   @duration = duration&lt;br /&gt;   end&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;В доках по руби был приведен очень интересный пример использования переменные класса, к  примеру у нас есть класс Song в котором есть метод инициализации и метод play который выводи сколько раз играла музыка и сколько раз играла конкретно взятая песня.  Т.е мы создаём объекты класса Song, каждый объект это песня. Теперь вопрос:&lt;br /&gt;Как сделать учёт того, сколько раз играла песня данного объекта и сколько раз всего играла музыка. Если говорить с точки зрения программирования на эту задачу, то вопрос стоит таким образом.&lt;br /&gt;Как вести учёт того, сколько раз вызывался метод конкретного объекта и сколько раз вызывался этот метод вобще в целом. Решение:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;class Song&lt;br /&gt; @@plays = 0&lt;br /&gt; def initialize(name, artist, duration)&lt;br /&gt;   @name     = name&lt;br /&gt;   @artist   = artist&lt;br /&gt;   @duration = duration&lt;br /&gt;   @plays    = 0&lt;br /&gt; end&lt;br /&gt; def play&lt;br /&gt;   @plays += 1&lt;br /&gt;   @@plays += 1&lt;br /&gt;   &quot;This  song: #@plays plays. Total #@@plays plays.&quot;&lt;br /&gt; end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;####### дебаг)&lt;br /&gt;s1 = Song.new(&quot;Song1&quot;, &quot;Artist1&quot;, 234)  # test songs.. &lt;br /&gt;s2 = Song.new(&quot;Song2&quot;, &quot;Artist2&quot;, 345) &lt;br /&gt;s1.play  » &quot;This  song: 1 plays. Total 1 plays.&quot; &lt;br /&gt;s2.play  » &quot;This  song: 1 plays. Total 2 plays.&quot; &lt;br /&gt;s1.play  » &quot;This  song: 2 plays. Total 3 plays.&quot; &lt;br /&gt;s1.play  » &quot;This  song: 3 plays. Total 4 plays.&quot;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Переменные класса доступны для всех объектов вашего класса, объявлять их нужно до того как вы начнёте их использовать. Переменная класса начинается с двойной &quot;@&quot; в отличии от локальной переменной.Так же переменные класса доступны только для класса и его инстанций и если вы хотите использовать его извне то нужно прописать для них доступ, как это делать описано в начале заметки.</content><link rel='replies' type='application/atom+xml' href='http://railsbeginner.blogspot.com/feeds/7197586804257881079/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6170579699711476291/7197586804257881079' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6170579699711476291/posts/default/7197586804257881079'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6170579699711476291/posts/default/7197586804257881079'/><link rel='alternate' type='text/html' href='http://railsbeginner.blogspot.com/2007/08/ruby_04.html' title='Ruby : Объекты , атрибуты  и прочее'/><author><name>Юрий</name><uri>http://www.blogger.com/profile/06182394512783732961</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6170579699711476291.post-872252724618967188</id><published>2007-08-04T00:44:00.000-07:00</published><updated>2007-08-04T02:37:52.696-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="OOP"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><category scheme="http://www.blogger.com/atom/ns#" term="ROR"/><category scheme="http://www.blogger.com/atom/ns#" term="Классы"/><category scheme="http://www.blogger.com/atom/ns#" term="ООП"/><category scheme="http://www.blogger.com/atom/ns#" term="Объекты"/><title type='text'>Ruby : Коротко об ООП</title><content type='html'>ООП в Ruby заслуживает уважения, оно гораздо мощнее и шире нежели в PHP5 и тем более PHP4, по-этому моё знакомство с этим языком не может не обойтись без рассмотрения принципов работы объектов в этом языке.&lt;br /&gt;&lt;br /&gt;Следуя документации Ruby рассмотрим пример простого класса :&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;class Song&lt;br /&gt;def initialize(name, artist, duration)&lt;br /&gt;  @name     = name&lt;br /&gt;  @artist   = artist&lt;br /&gt;  @duration = duration&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Название класса начинается с заглавной буквы, а методы с маленькой :) , метод initialize аналогичен методу __construct в php, он исполняется в момент когда создают копию объекта.&lt;br /&gt;&lt;br /&gt;Создать объект довольно просто:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;aSong = Song.new(&quot;Stargazers&quot;, &quot;Rainbow&quot;, 260)&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Так же руби позволяет делать дамп объекта специальным методом inspect&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;aSong.inspect » &quot;#Song:0x401b4924 @duration=260, @artist=&#39;Rainbow&#39;, @name=&#39;Stargazers&#39;&quot;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Если нам нужно наладить дамп объекта в другом формате для этого есть специальный метод to_s:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;aSong.to_s »  &quot;#Song:0x401b499c&quot;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Так как по дефолту это выводит лишь ID объекта мы можем переписать метод :)&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;class Song&lt;br /&gt; def initialize(name, artist, duration)&lt;br /&gt;  @name     = name&lt;br /&gt;  @artist   = artist&lt;br /&gt;  @duration = duration&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;def to_s&lt;br /&gt;  &quot;Song: #{@name}--#{@artist} (#{@duration})&quot;&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;aSong = Song.new(&quot;Stargazer&quot;, &quot;Rainbow&quot;, 260)&lt;br /&gt;aSong.to_s  » &quot;Song: Stargazer--Rainbow(260)&quot;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Родительские классы в Ruby рассмотрим на следующем примере:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;class Song&lt;br /&gt;&lt;br /&gt; def initialize(name, artist, duration)&lt;br /&gt;  @name     = name&lt;br /&gt;  @artist   = artist&lt;br /&gt;  @duration = duration&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;def to_s&lt;br /&gt;  &quot;Song: #{@name}--#{@artist} (#{@duration})&quot;&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;class KaraokeSong &lt; Song&lt;br /&gt;  def initialize(name, artist, duration, lyrics)&lt;br /&gt;    super(name, artist, duration)&lt;br /&gt;    @lyrics = lyrics&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Как вы заметили мы создали второй класс &lt;i&gt;KaraokeSong&lt;/i&gt; и указали ему родительский класс &lt;i&gt;Song&lt;/i&gt;. Для вызова initialize метода родительского мы используем super(). Все это видно из примера выше :)&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;super это очень интересная вещь ;) Он сообщает родительскому классу о том, что нужно вызвать метод с тем же именем из которого и был вызов super, в нашем примере мы вызываем super из метода &lt;i&gt;initialize&lt;/i&gt; класса &lt;i&gt;KaraokeSong&lt;/i&gt; в свою очередь super даёт задание вызвать метод &lt;i&gt;initialize&lt;/i&gt; в классе&lt;i&gt;Song&lt;/i&gt;, так как он родительский :) &lt;/blockquote&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsbeginner.blogspot.com/feeds/872252724618967188/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6170579699711476291/872252724618967188' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6170579699711476291/posts/default/872252724618967188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6170579699711476291/posts/default/872252724618967188'/><link rel='alternate' type='text/html' href='http://railsbeginner.blogspot.com/2007/08/ruby.html' title='Ruby : Коротко об ООП'/><author><name>Юрий</name><uri>http://www.blogger.com/profile/06182394512783732961</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6170579699711476291.post-1593040190134927561</id><published>2007-08-03T04:23:00.001-07:00</published><updated>2007-08-03T04:26:39.242-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ROR"/><category scheme="http://www.blogger.com/atom/ns#" term="RubyOnRails"/><category scheme="http://www.blogger.com/atom/ns#" term="Массивы"/><title type='text'>Ruby On Rails : Массивы в руби ( часть первая )</title><content type='html'>Я уже писал о том, что мне очень нравится то как в Ruby реализованы массивы и то, что мне не нравится как это сделано в PHP. Опишу основны при работе с массивами в Ruby.&lt;br /&gt;&lt;br /&gt;Массивы в руби можно создавать многими способами. Первый довольно простой перечисляя элементы в квадратных скобках разделяя их запятыми:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;my_array = [&#39;php&#39;, &#39;ruby&#39;, &#39;perl&#39; , &#39;python&#39;]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Так же Ruby позволяет создавать массив на основе строки разделённой пробелами:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;my_array = %w( php ruby perl python)&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Так как в Ruby Array это класс, а наш массив это его объект, то создать нужный нам массив можно еще и этим способом.&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;my_array = Array.new&lt;br /&gt;my_array &lt;&lt; &#39;php&#39; &lt;br /&gt;my_array &lt;&lt; &#39;ruby&#39;&lt;br /&gt;my_array &lt;&lt; &#39;perl&#39;&lt;br /&gt;my_array &lt;&lt; &#39;python&#39;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Так же Ruby позволяет работать с массивами следующим образом&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;first = my_array.first # first = php&lt;br /&gt;&lt;br /&gt;last = my_array.last # last = python&lt;br /&gt;&lt;br /&gt;total = my_array.length # total = 4&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Если нам нужно пройтись по всему массиву как мы это делали в php через foreach в Ruby это делается следующим образом:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;games = [&#39;startcraft&#39;, &#39;quake&#39;, &#39;warcraft&#39;]&lt;br /&gt;&lt;br /&gt;games.each do |Game|&lt;br /&gt;puts &quot;#{Game} классная игра!&quot;&lt;br /&gt;end&lt;br /&gt;=&gt; startcraft классная игра!&lt;br /&gt;=&gt; quake классная игра!&lt;br /&gt;=&gt; warcraft классная игра!&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Либо так :)&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;games = [&#39;startcraft&#39;, &#39;quake&#39;, &#39;warcraft&#39;]&lt;br /&gt;&lt;br /&gt;games.each_with_index do |game , index|&lt;br /&gt;puts &quot;#{index} : {game} классная игра!&quot;&lt;br /&gt;end&lt;br /&gt;=&gt; 1 : startcraft классная игра!&lt;br /&gt;=&gt; 2 : quake классная игра!&lt;br /&gt;=&gt; 3 : warcraft классная игра!&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;А еще можно вот так :)&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;items = [&#39;Ruby On Rails&#39;, &#39;Ruby&#39;, &#39;My Self&#39;]&lt;br /&gt;&lt;br /&gt;array_of_stuff = items.map do |item|&lt;br /&gt;&quot;i love #{item}&quot;&lt;br /&gt;end&lt;br /&gt;# Массив array_of_stuff состоит сейчас из :&lt;br /&gt;=&gt; [&#39;i love Ruby On Rails&#39;, &#39;i love Ruby&#39;, &#39;i love My Self&#39;]&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;И так основные моменты в работе с массивами я описал, дальше будет больше :)</content><link rel='replies' type='application/atom+xml' href='http://railsbeginner.blogspot.com/feeds/1593040190134927561/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6170579699711476291/1593040190134927561' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6170579699711476291/posts/default/1593040190134927561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6170579699711476291/posts/default/1593040190134927561'/><link rel='alternate' type='text/html' href='http://railsbeginner.blogspot.com/2007/08/ruby-on-rails.html' title='Ruby On Rails : Массивы в руби ( часть первая )'/><author><name>Юрий</name><uri>http://www.blogger.com/profile/06182394512783732961</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6170579699711476291.post-185350933986413138</id><published>2007-08-02T20:36:00.000-07:00</published><updated>2007-08-03T07:59:22.801-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CakePHP"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><category scheme="http://www.blogger.com/atom/ns#" term="ROR"/><category scheme="http://www.blogger.com/atom/ns#" term="RubyOnRails"/><category scheme="http://www.blogger.com/atom/ns#" term="Введение"/><title type='text'>Шаг второй: Особенности Ruby On Rails</title><content type='html'>Как только вы создадите новое предложение и готовы уже создавать проект вашей мечты, вам следует знать некоторые нюансы при работе с рельсами.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;В отличии от CakePHP где слой по умолчанию назывался default.ctp, а в Ruby On Rails все обстоит не многим иначе. Для каждого контроллера в приложении можно создать свой слой назвав его тем же именем как и контроллер и положив в папку layouts, так же предусмотрен layout по умолчанию, его имя application.rhtml и располагается он там же в папке Layouts.&lt;/li&gt;&lt;li&gt;CakePHP использует расширение .ctp для вьюшек, в тоже время RubyOnRails использует .rhtml&lt;/li&gt;&lt;li&gt;Я нигде не нашёл упоминания о том, что нужно удалять файл public/index.html, но это чётко упоминается при редактировании роутера.&lt;/li&gt;&lt;li&gt;При работе с layout переменная в которой находится вывод контроллера назыается @content_for_layout :)&lt;/li&gt;&lt;li&gt;Для вставки кода на ruby во вьюшку достаточно использовать следующую конструкцию &lt;%= @peremennaya %&gt;&lt;/li&gt;&lt;/ol&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsbeginner.blogspot.com/feeds/185350933986413138/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6170579699711476291/185350933986413138' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6170579699711476291/posts/default/185350933986413138'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6170579699711476291/posts/default/185350933986413138'/><link rel='alternate' type='text/html' href='http://railsbeginner.blogspot.com/2007/08/blog-post_02.html' title='Шаг второй: Особенности Ruby On Rails'/><author><name>Юрий</name><uri>http://www.blogger.com/profile/06182394512783732961</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6170579699711476291.post-6338974084667478584</id><published>2007-08-01T21:35:00.000-07:00</published><updated>2007-08-01T22:29:07.673-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="fastthread"/><category scheme="http://www.blogger.com/atom/ns#" term="Mongrel"/><category scheme="http://www.blogger.com/atom/ns#" term="ROR"/><category scheme="http://www.blogger.com/atom/ns#" term="RubyOnRails"/><category scheme="http://www.blogger.com/atom/ns#" term="WEBRrick"/><title type='text'>Web сервер для RubyOnRails</title><content type='html'>Прежде чем начинать, что-то создавать и изобретать .. подготовим платформу до конца :)&lt;br /&gt;В состав диструбутива Ruby идёт веб-сервер WEBrick, что существенно облегчает жизнь при разработке :) Достаточно перейти в директорию с приложением и написать следующее :&lt;br /&gt;&lt;pre&gt;&lt;code&gt;c:\rails_www\test\&gt;ruby script/server&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Далее запустится WEBRick и вы сможете работать со своим проектом :)&lt;br /&gt;Но так как нам везде нужна альтернатива ... мне очень стало интересно .. есть ли не что более лучшее чем WEBrick? Представляю вашему вниманию &lt;a href=&quot;http://mongrel.rubyforge.org/&quot;&gt;Mongrel&lt;/a&gt;!&lt;br /&gt;Для установки Mongrel нам понадобится наш прошлый герой RubyGems и так открываем консоль :)&lt;br /&gt;Ставим fastthread :)&lt;br /&gt;&lt;pre&gt;&lt;code&gt;c:\rails_www\&gt;gem install fastthread --source=http://mongrel.rubyforge.org/releases&lt;br /&gt;Need to update 8 gems from http://mongrel.rubyforge.org/releases&lt;br /&gt;........&lt;br /&gt;complete&lt;br /&gt;Select which gem to install for your platform (i386-mswin32)&lt;br /&gt;1. fastthread 1.0 (ruby)&lt;br /&gt;2. fastthread 1.0 (ruby)&lt;br /&gt;3. fastthread 1.0 (mswin32) &lt;-- нам нужен этот вариант. &lt;br /&gt;4. fastthread 0.6.4.1 (ruby) &lt;br /&gt;5. fastthread 0.6.4.1 (mswin32) &lt;br /&gt;6. Skip this gem &lt;br /&gt;7. Cancel installation &lt;br /&gt;&gt; 3&lt;br /&gt;Successfully installed fastthread-1.0-mswin32&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;И так fastthread я уже поставил, теперь установим mongrel :)&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;c:\rails_www\&gt;gem install mongrel --source=http://mongrel.rubyforge.org/releases&lt;br /&gt;Select which gem to install for your platform (i386-mswin32)&lt;br /&gt;1. mongrel 1.0.1 (ruby)&lt;br /&gt;2. mongrel 1.0.1 (mswin32)&lt;br /&gt;3. mongrel 1.0.1 (ruby)&lt;br /&gt;4. mongrel 1.0 (ruby)&lt;br /&gt;5. mongrel 1.0 (mswin32)&lt;br /&gt;6. Skip this gem&lt;br /&gt;7. Cancel installation&lt;br /&gt;&gt; 2&lt;br /&gt;Install required dependency gem_plugin? [Yn]  Y&lt;br /&gt;Successfully installed mongrel-1.0.1-mswin32&lt;br /&gt;Successfully installed gem_plugin-0.2.2&lt;br /&gt;Installing ri documentation for mongrel-1.0.1-mswin32...&lt;br /&gt;Installing ri documentation for gem_plugin-0.2.2...&lt;br /&gt;Installing RDoc documentation for mongrel-1.0.1-mswin32...&lt;br /&gt;Installing RDoc documentation for gem_plugin-0.2.2...&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;У нас теперь вместо дефолтного WEBRick&#39;a стоит Mongrel, конечно на данном этапе это ни какой роли не играет, но и не помешает :) запускается таким же образом :&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;ruby script/server&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;При установке я руководствовался сайтом &lt;a href=&quot;http://www.rails.org.ua/&quot;&gt;Rails.Org.Ua&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://railsbeginner.blogspot.com/feeds/6338974084667478584/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6170579699711476291/6338974084667478584' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6170579699711476291/posts/default/6338974084667478584'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6170579699711476291/posts/default/6338974084667478584'/><link rel='alternate' type='text/html' href='http://railsbeginner.blogspot.com/2007/08/web-rubyonrails.html' title='Web сервер для RubyOnRails'/><author><name>Юрий</name><uri>http://www.blogger.com/profile/06182394512783732961</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6170579699711476291.post-8385310537428238588</id><published>2007-08-01T08:23:00.001-07:00</published><updated>2007-08-01T10:27:50.020-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="ROR"/><category scheme="http://www.blogger.com/atom/ns#" term="RubyGems"/><category scheme="http://www.blogger.com/atom/ns#" term="RubyOnRails"/><category scheme="http://www.blogger.com/atom/ns#" term="Установка"/><title type='text'>Шаг Первый : Как это установить о_О?</title><content type='html'>Как и следовало ожидать установка не представляет из себя ничего сложно, а для людей привыкших к работе в консоли окажется вполне удобным и свойским.&lt;br /&gt;&lt;br /&gt;Для начала я пошёл на официальный сайт &lt;a href=&quot;http://rubyonrails.com/&quot;&gt;RubyOnRails&lt;/a&gt;, огляделся .. вполне так симпатишный сайтик :), ну да ладно о эстетике :). Нас интересует раздел &lt;a href=&quot;http://rubyonrails.com/down&quot;&gt;Download&lt;/a&gt;.&lt;br /&gt;На странице загрузки вас ожидает Ruby installer для Windows если ты виндузятник, ну а линуксоид и прочий неформал найдет для себя нужное в репозитарии сорцов :).&lt;br /&gt;&lt;br /&gt;И так сам интерпретатор мы скачали, что делаем дальше .. судя странице &lt;a href=&quot;http://rubyonrails.com/down&quot;&gt;Download&lt;/a&gt; нам нужно скачать Ruby Gems.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Ruby Gems это такая классная штуковина которая помогает нам скачивать всякие офигенные прибамбасины для нашего замечательного фреймворка :). Ну всякие там дополнения это как в Debian диструбутивах софтинка Apt-get благодоря которой вы можете скачивать пакеты для вашего линукса. Кстати говоря сравнивая это с apt-get так же стоит сказать, что apt-get качает пакеты, а ruby gems качает гемы ^_^ логично да?&lt;/blockquote&gt;&lt;br /&gt;И так я скачал Ruby Gems .. и уже давно установил Ruby через Windows Installer.&lt;br /&gt;Следующий шаг будет распоковка Ruby Gems, в какую либо директорию. Для примера я распаковал всю эту радость в папку:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;c:\rubygems\&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Далее запустили cmd.exe и производим установку Ruby Gems:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;ruby setup.rb&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Если консоль сообщает, что ruby не найден .. то каким-то чудом переменные окружения у вас не работают глобально :) Не беда .. я с этим столкнулся и решил очень простым способом :) Топаем в свойство системы выбираем &quot;дополнительно&quot; и там кнопочка &quot;Переменные среды&quot;. Так вот я обнаружил, что в системных переменных все прописалось, а в пользовательских нет, решается банальным переносом создаете в &quot;Переменные среды пользователя *Имя_Пользователя* 3 переменные &quot;PATHEXT&quot; , &quot;PATH&quot; , &quot;RUBYOPT&quot; значения для которых берете из системных.&lt;br /&gt;&lt;br /&gt;Ну вот ... гемы установились .. что теперь? стаил рельсы!! :)&lt;br /&gt;&lt;br /&gt;&lt;code&gt;gem install rails --include-dependencies&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Вполне возможно случится такое, что используя эту команду зависимости такие как ActiveRecord , ActiveSupport не скачались, по-этому можно их скачать отдельно и в ручную&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;gem install activesupport&lt;br /&gt;gem install actionpack&lt;br /&gt;gem install actionmailer&lt;br /&gt;gem install activerecord&lt;br /&gt;gem install actionwebservice&lt;br /&gt;gem install rake&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;И так ... что мы сделали .. в принципе мы сделали все, что нужно для того, чтобы безнаказанно создавать Rails приложения :) Мы же хотим их создавать ? Хотим!!!&lt;br /&gt;&lt;br /&gt;И так для этого я себе создал еще одну директорию в корне диска и назвал её&lt;br /&gt;&lt;br /&gt;&lt;code&gt;c:\rails_apps\&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;К примеру .. с чего бы мне начать своё увлекательнейшее приключение с Ruby On Rails? Хмм.. обычно пытаются делать всякие блоги, wiki и прочую дребедень .. но мы ведь хотим научится использовать RubyOnRails! а не создавать блог ... блог я и wordpress создать могу :) Кстати хорошая альтернатива Wordpress&#39;у в среде Ruby это &lt;a href=&quot;http://mephistoblog.com/&quot;&gt;MephistoBlog.&lt;/a&gt; И так, что я надумал? Да все гениальное просто .. я создаю себе приложение Test и буду просто тыкать, щупать, и наслаждаться возможностью Ruby On Rails и так поехали :)&lt;br /&gt;&lt;br /&gt;&lt;code&gt;c:\rails_apps\&gt; rails Test &lt;/code&gt;&lt;br /&gt;&lt;br /&gt;После чего у нас появится директория с приложением Test в котором нам нужно будет создавать свои контроллеры, модели, вьюшки вобщем все как в MVC :)&lt;br /&gt;&lt;br /&gt;И так .. на этом мы закончим ... установить установили .. создать создали .. в след. посте будем придумывать себе задачки на Ruby On Rails ! ;)</content><link rel='replies' type='application/atom+xml' href='http://railsbeginner.blogspot.com/feeds/8385310537428238588/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6170579699711476291/8385310537428238588' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6170579699711476291/posts/default/8385310537428238588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6170579699711476291/posts/default/8385310537428238588'/><link rel='alternate' type='text/html' href='http://railsbeginner.blogspot.com/2007/08/blog-post.html' title='Шаг Первый : Как это установить о_О?'/><author><name>Юрий</name><uri>http://www.blogger.com/profile/06182394512783732961</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6170579699711476291.post-8673252776143503172</id><published>2007-08-01T02:27:00.000-07:00</published><updated>2007-08-01T06:36:24.124-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CakePHP"/><category scheme="http://www.blogger.com/atom/ns#" term="PHP"/><category scheme="http://www.blogger.com/atom/ns#" term="ROR"/><category scheme="http://www.blogger.com/atom/ns#" term="Введение"/><title type='text'>Открытие Ruby On Rails</title><content type='html'>Один хороший знакомый, похвалился как-то раз мне о том, что начинает осваивать интересную технологию, по причине того, что задание на работе перед ним стоит именно на Ruby On Rails, который он собственно не знает, тогда я ему по желал удачи и видимо не зря, буквально через пару недель? он уже расхваливал ROR всеми знакомыми ему словами. Я тогда не предал этому особое значение, так как занят был проектом на PHP и решил, что необходимости в этом особой нет. Прошло врем, ROR набирает обороты и я решил взвесить все за и против.&lt;br /&gt;&lt;br /&gt;Как программисту по большей части на PHP мне было интересно все же сравнить этот фреймворк с CakePHP ( я уже знал, что CakePHP это жалкая адаптация ROR в среду PHP ), и понять, чего же такого замечательного в CakePHP все еще нет. До этого момента на CakePHP я уже писал достаточно долго и хорошо понимал его плюсы и минусы перед другими фреймворками на php, по-этому я начал свой анализ с того, что описал для себя первые минусы :&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style=&quot;font-weight: bold; color: rgb(102, 102, 102);font-family:trebuchet ms;font-size:100%;&quot;  &gt;CakePHP &lt;/span&gt;&lt;span style=&quot;color: rgb(102, 102, 102);font-size:100%;&quot; &gt;&lt;span style=&quot;font-family:trebuchet ms;&quot;&gt;довольно таки медленная система, но крайне удобная с точки зрения реализации MVC и настройки. Элементарным примером низкой производительности этой системы будет служить то, что Welcome Screen после запуска Cake приложения ( когда вы только установили Cake ) генерируется крайне медленно, сравнивать сейчас не возьмусь, но поверьте для такого простого задания это долго. Этот фактор низкой производительности мучал меня довольно долго.. и я даже как-то решил перейти на &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold; color: rgb(102, 102, 102);font-family:trebuchet ms;font-size:100%;&quot;  &gt;CodeIgniter&lt;/span&gt;&lt;span style=&quot;color: rgb(102, 102, 102);font-size:100%;&quot; &gt;&lt;span style=&quot;font-family:trebuchet ms;&quot;&gt;, и был крайне удивлён тому насколько он быстро работает на фоне &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold; color: rgb(102, 102, 102);font-family:trebuchet ms;font-size:100%;&quot;  &gt;CakePHP&lt;/span&gt;&lt;span style=&quot;color: rgb(102, 102, 102);font-size:100%;&quot; &gt;&lt;span style=&quot;font-family:trebuchet ms;&quot;&gt;, но не все так красиво и прекрасно с моей тогдашней находкой, ужасная реализация layout системы просто заставила меня забыть этот фреймворк. И вот Я решился на этот шаг и положить php в далекий ящик. За три года работы с этим языком мне в нём очень многое стало раздражать, по-этому я уже был морально готов ко всем вкусностям которые так громко и навязчиво перечислял мой знакомый ...&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Что я полюбил в Руби еще не начав его использовать ...&lt;/span&gt;&lt;br /&gt;Крайне интересная ситуация влюбляешься в то, что еще даже не щупал ... Наверное первое .. это массивы, кто часто встречается с массивами знает как php беден в этой области, а Руби обладает очень приятными и главное широкими возможностями в этом плане, что очень сильно предрасполагает к себе. Еще мне понравилась, то как все это будет работать, я люблю новые вещи и трудности, а как мне по началу показалось .. трудности эти будут и обязательно. Производительность Ruby On Rails обсуждаемая на форумах и блогах меня тоже радовала и подталкивала на то, чтобы попробовать это самому, можно сказать я уже был готов к этому морально и физически ( закончил все проекты на php ).&lt;br /&gt;&lt;br /&gt;И так, как вы уже поняли .. я человек который разбирается в Ruby On Rails на уровне &quot;ой я думаю если написать так .. будет работать ..ой .. что-то не работает .. ааа может так .. О_О заработало&quot; ... так вот я буду описывать в этом блоге каждый шаг эволюция новичка в профессионального программиста на Ruby On Rails.</content><link rel='replies' type='application/atom+xml' href='http://railsbeginner.blogspot.com/feeds/8673252776143503172/comments/default' title='Комментарии к сообщению'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/6170579699711476291/8673252776143503172' title='Комментарии: 0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6170579699711476291/posts/default/8673252776143503172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6170579699711476291/posts/default/8673252776143503172'/><link rel='alternate' type='text/html' href='http://railsbeginner.blogspot.com/2007/08/rails.html' title='Открытие Ruby On Rails'/><author><name>Юрий</name><uri>http://www.blogger.com/profile/06182394512783732961</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>