<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Jaros&#322;aw Zabie&#322;&#322;o - BLOG: Rails 2.0 preview</title>
    <link>http://blog.zabiello.com/articles/2007/10/04/rails-2-0-preview</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>moje notatki, linki, komentarze</description>
    <item>
      <title>Rails 2.0 preview</title>
      <description>&lt;p&gt;M&#243;wi&#322;o si&#281;, &#380;e Rails 2.0 mia&#322; wyj&#347;&#263; po i na Ruby 2.0. Mo&#380;e to i dobrze, &#380;e tw&#243;rcy nie wytrzymali i udost&#281;pnili wersj&#281; testow&#261; Rails 2.0. &lt;a href="http://weblog.rubyonrails.org/2007/9/30/rails-2-0-0-preview-release"&gt;Informacja o tym wydarzeniu&lt;/a&gt; pojawi&#322;a si&#281; na blogu oficjalnej strony RoR.&lt;/p&gt;


	&lt;p&gt;Troch&#281; dziwne, &#380;e &lt;span class="caps"&gt;DHH&lt;/span&gt; nie planuje aktualizacji swej ksi&#261;&#380;ki &lt;a href="http://www.pragmaticprogrammer.com/titles/rails/index.html"&gt;&lt;span class="caps"&gt;AWDR&lt;/span&gt;&lt;/a&gt;, bo zmian jest ca&#322;kiem sporo. Web serwisy (jak wcze&#347;niej to zapowiadano) wylecia&#322;y z kodu g&#322;&#243;wnego (b&#281;d&#261; dost&#281;pne jako plugin). W ich miejsce wprowadzono nowy modu&#322; ActiveResource silnie promuj&#261;cy RESTfull. Zmieniono te&#380; konwencj&#281; nazw dla plik&#243;w szablon&#243;w. Wypadaj&#261; rozszerzenia .rjs i .rxml. Zamiast test.rxml mo&#380;e by&#263; test.atom.builder lub test.xml.builder. W nazwie zawarta jest informacja o typu &lt;span class="caps"&gt;MIME&lt;/span&gt;. Podobnie zamiast test.rhtml ma by&#263; test.html.erb, a zamiast test.haml, test.html.haml. Mnie to si&#281; nawet podoba. Czy&#380;by Ruby pozazdro&#347;ci&#322; troch&#281; pythonowej zasady &amp;#8220;jawne lepsze jest od domy&#347;lnego&amp;#8221;? Podobno w&#322;o&#380;ono troch&#281; pracy w optymalizacj&#281; kodu, powtarzaj&#261;ce si&#281; kwerendy &lt;span class="caps"&gt;SQL&lt;/span&gt; w ramach jednego requestu powinny leci&#263; z cache. Niestety wci&#261;&#380; jeszcze na tym polu jest sporo do zrobienia. Czekam np. na iteratory i parametryzowane &lt;span class="caps"&gt;SQL&lt;/span&gt; dla Active Record.&lt;/p&gt;


RoR 2.0prev instalujemy tak jak wersj&#281; Edge, czyli: 
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;gem&lt;/span&gt; &lt;span class="ident"&gt;install&lt;/span&gt; &lt;span class="ident"&gt;rails&lt;/span&gt; &lt;span class="punct"&gt;--&lt;/span&gt;&lt;span class="ident"&gt;source&lt;/span&gt; &lt;span class="ident"&gt;http&lt;/span&gt;&lt;span class="punct"&gt;:/&lt;/span&gt;&lt;span class="regex"&gt;&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;gems&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;rubyonrails&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;org&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Je&#347;li mieli&#347;my wcze&#347;niej zainstalowan&#261; wersj&#281; 1.2.3 to teraz b&#281;dziemy mieli dwie. W zasadzie mo&#380;na mie&#263; w systemie tyle wersji danego gemu, ile chcemy (lub wyczy&#347;ci&#263; stare za pomoc&#261; komendy &amp;#8220;gem cleanup&amp;#8221;) Tylko uwaga, RoR 2.0_PR jest oznaczony jako wersja &lt;strong&gt;rails-1.2.3.7707&lt;/strong&gt; i to powoduje, &#380;e stare aplikacje, kt&#243;re nie maj&#261; zrzuconych lokalnie gem&#243;w RoR 1.2.3, wci&#261;gn&#261; wersj&#281; 2.0_PR my&#347;l&#261;c &#380;e to wersja 1.2.3. Dlatego osoby chc&#261;ce testowa&#263; wersj&#281; 2.0 powinny &amp;#8220;pozamra&#380;a&#263;&amp;#8221; sobie gemy takie, jakie u&#380;ywa ich aplikacja. Tzn. chodzi o skopiowanie gem&#243;w RoR do katalogu &amp;#8220;vendors/rails&amp;#8221;. Aplikacja RoR w poszukiwaniu gem&#243;w zaczyna od tego katalogu (je&#347;li istnieje) co daje nam bardzo wygodn&#261; przeno&#347;no&#347;&#263;. Dla aplikacji u&#380;ywaj&#261;cej RoR 1.2.3 najlepiej u&#380;y&#263; komendy:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;rake&lt;/span&gt; &lt;span class="ident"&gt;rails&lt;/span&gt;&lt;span class="symbol"&gt;:freeze:edge&lt;/span&gt; &lt;span class="constant"&gt;TAG&lt;/span&gt;&lt;span class="punct"&gt;=&lt;/span&gt;&lt;span class="ident"&gt;rel_1&lt;/span&gt;&lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="number"&gt;2&lt;/span&gt;&lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="number"&gt;3&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;To dzia&#322;a niezale&#380;nie od tego jak&#261; wersj&#281; Rails mamy w systemie. Lista wszystkich wersji &lt;a href="http://dev.rubyonrails.org/svn/rails/tags"&gt;jest tu&lt;/a&gt;. Je&#347;li natomiast chcemy sobie testowa&#263; RoR 2.0_PR, ale bez instalacji jej w systemie, mo&#380;na dla naszej testowej aplikacji zamrozi&#263; gemy z tej wersji:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;rake&lt;/span&gt; &lt;span class="ident"&gt;rails&lt;/span&gt;&lt;span class="symbol"&gt;:freeze:edge&lt;/span&gt; &lt;span class="constant"&gt;TAG&lt;/span&gt;&lt;span class="punct"&gt;=&lt;/span&gt;&lt;span class="ident"&gt;rel_2&lt;/span&gt;&lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="number"&gt;0&lt;/span&gt;&lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="number"&gt;0_&lt;/span&gt;&lt;span class="constant"&gt;PR&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Czasem kto&#347; mo&#380;e mie&#263; kilka wersji w systemie i chcia&#322;by je wyczy&#347;ci&#263; do jednej, np. stabilnej 1.2.3. W tym celu  musi wpierw odinstalowa&#263; wszystkie gemy RoR (niestety trzeba to robi&#263; r&#281;cznie dla ka&#380;dego gemu). Robi si&#281; to za pomoc&#261; serii komend &amp;#8220;gem uninstal nazwa_gemu&amp;#8221;. Nie ma te&#380; co polega&#263; na poleceniu &amp;#8220;rails -v&amp;#8221; bo ono nie podaje poprawnej wersji Rails&#243;w w wypadku u&#380;ycia wersji Edge. Aby zobaczy&#263; to, co faktycznie mamy zainstalowane w systemie, nale&#380;y odpali&#263; komend&#281; &amp;#8220;gem_server&amp;#8221; i zajrze&#263; pod adres http://localhost:8808.&lt;/p&gt;


	&lt;p&gt;Nast&#281;pnie instalujemy na nowo Rails (z podaniem wersji, aby nie wci&#261;gn&#281;&#322;a si&#281; z powrotem wersja Edge).&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;gem&lt;/span&gt; &lt;span class="ident"&gt;install&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;y&lt;/span&gt; &lt;span class="ident"&gt;rails&lt;/span&gt; &lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;v&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;=1.2.3&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description>
      <pubDate>Thu, 04 Oct 2007 13:12:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:a3c7c144-e243-4155-a15c-3a82ef782aa2</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2007/10/04/rails-2-0-preview</link>
      <category>rails</category>
    </item>
  </channel>
</rss>
