<?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: Ruby on Rails 1.2 RC1</title>
    <link>http://blog.zabiello.com/articles/2006/11/25/ruby-on-rails-1-2-rc1</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>moje notatki, linki, komentarze</description>
    <item>
      <title>Ruby on Rails 1.2 RC1</title>
      <description>&lt;p&gt;Nadchodzi wielkimi krokami &lt;a href="http://weblog.rubyonrails.org/2006/11/23/rails-1-2-release-candidate-1"&gt;Ruby on Rails 1.2&lt;/a&gt;. W&#322;a&#347;nie udost&#281;pniono wersj&#281; &lt;span class="caps"&gt;RC1&lt;/span&gt;. Wersja finalna powinna pojawi&#263; si&#281; w najbli&#380;szych tygodniach. Wprowadzono szereg istotnych usprawnie&#324; w dzia&#322;aniu Rails&#243;w powi&#281;kszaj&#261;c tym samym jeszcze bardziej komfort pracy i dystans w stosunku do pozosta&#322;ych framework&#243;w.&lt;/p&gt;


	&lt;p&gt;Np. dodano dodatkowy &lt;strong&gt;parametr &amp;#8220;format&amp;#8221; do metody respond_to&lt;/strong&gt;. Aby z tego korzysta&#263;, nale&#380;y w routes.rb doda&#263; regu&#322;&#281;:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;map&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;connect&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;:controller/:action/:id.:format&lt;/span&gt;&lt;span class="punct"&gt;'.&lt;/span&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Nie trzeba ju&#380; wi&#281;cej bawi&#263; si&#281; w analiz&#281; nag&#322;&#243;wk&#243;w &lt;span class="caps"&gt;HTTP&lt;/span&gt;.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;WeblogController&lt;/span&gt; &lt;span class="punct"&gt;&amp;lt;&lt;/span&gt; &lt;span class="constant"&gt;ActionController&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;Base&lt;/span&gt;
  &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;index&lt;/span&gt;
    &lt;span class="attribute"&gt;@posts&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Post&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;find&lt;/span&gt; &lt;span class="symbol"&gt;:all&lt;/span&gt;
    &lt;span class="ident"&gt;respond_to&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;format&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;
      &lt;span class="ident"&gt;format&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;html&lt;/span&gt;
      &lt;span class="ident"&gt;format&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;xml&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="ident"&gt;render&lt;/span&gt; &lt;span class="symbol"&gt;:xml&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="attribute"&gt;@posts&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_xml&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt;
      &lt;span class="ident"&gt;format&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;rss&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="ident"&gt;render&lt;/span&gt; &lt;span class="symbol"&gt;:action&lt;/span&gt; &lt;span class="punct"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="punct"&gt;&amp;quot;&lt;/span&gt;&lt;span class="string"&gt;feed.rxml&lt;/span&gt;&lt;span class="punct"&gt;&amp;quot;&lt;/span&gt; &lt;span class="punct"&gt;}&lt;/span&gt;
    &lt;span class="keyword"&gt;end&lt;/span&gt;
  &lt;span class="keyword"&gt;end&lt;/span&gt;
&lt;span class="keyword"&gt;end&lt;/span&gt;

&lt;span class="constant"&gt;GET&lt;/span&gt; &lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;weblog&lt;/span&gt;       &lt;span class="comment"&gt;# zwr&#243;ci HTML&lt;/span&gt;
&lt;span class="constant"&gt;GET&lt;/span&gt; &lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;weblog&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;xml&lt;/span&gt;   &lt;span class="comment"&gt;# zwr&#243;ci XML&lt;/span&gt;
&lt;span class="constant"&gt;GET&lt;/span&gt; &lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;weblog&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;rss&lt;/span&gt;   &lt;span class="comment"&gt;# zwr&#243;ci RSS&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Inn&#261;, istotn&#261; zmian&#261; jest dodanie &lt;strong&gt;Multibyte&lt;/strong&gt;. Nie jest to co prawda tak zaawansowane jak w Pythonie, ale do czasu pojawienie si&#281; Ruby 2 (kt&#243;ry ma mie&#263; pe&#322;ne wsparcie dla Unicode), Multibyte poprawia troch&#281; sytuacj&#281;. programisty. Generalnie Ruby jako&#347; dawa&#322; sobie rad&#281; z &lt;span class="caps"&gt;UTF&lt;/span&gt;-8, ale w niekt&#243;rych sytuacjach pojawia&#322;y si&#281; problemy. Np. metoda size() zwraca ilo&#347;&#263; bajt&#243;w a nie znak&#243;w. Multibyte wprowadza metod&#281; proxy dla napis&#243;w &amp;#8211; chars. Np.&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="constant"&gt;Napisa&#322;e&#347;&lt;/span&gt; &lt;span class="punct"&gt;&amp;lt;%=&lt;/span&gt;&lt;span class="string"&gt; @post.body.chars.length %&amp;gt; znak&#243;w.&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Jedn&#261; z bardziej rewolucyjnych zmian, jest dodanie obs&#322;ugi &lt;strong&gt;&lt;a href="http://www.ryandaigle.com/articles/2006/06/30/whats-new-in-edge-rails-activeresource-is-here"&gt;&lt;span class="caps"&gt;REST&lt;/span&gt;&lt;/a&gt;.&lt;/strong&gt;  (kt&#243;ra zak&#322;ada, &#380;e ka&#380;dy zas&#243;b sieci powinien by&#263; jednoznacznie identyfikowany za pomoc&#261; samego adresu &lt;span class="caps"&gt;URL&lt;/span&gt;). W praktyce oznacza, to znacznie skr&#243;cenie kontroler&#243;w w Railsach po przez wys&#322;anie na ten sam adres r&#243;&#380;nych komend, tzn,. nie tylko &lt;span class="caps"&gt;GET&lt;/span&gt; i &lt;span class="caps"&gt;POST&lt;/span&gt; ale tak&#380;e &lt;span class="caps"&gt;PUT&lt;/span&gt; i &lt;span class="caps"&gt;DELETE&lt;/span&gt;.  Mimo, &#380;e te polecenia s&#261; cze&#347;ci&#261; standardu protoko&#322;u &lt;span class="caps"&gt;HTTP&lt;/span&gt;, wi&#281;kszo&#347;&#263; przegl&#261;darek implementuje tylko &lt;span class="caps"&gt;GET I POST&lt;/span&gt;. W takim wypadku Rails emuluje dzia&#322;anie tych komend poprzez dodawanie do adresu znaku &#347;rednika i polecenia.&lt;/p&gt;


	&lt;p&gt;Plugin &lt;a href="http://weblog.rubyonrails.org/2006/8/1/simply-restful-in-rails-edge"&gt;Simply RESTful&lt;/a&gt; ju&#380; dzia&#322;a i mo&#380;na go u&#380;ywa&#263;. Np. wygeneruj sobie kod nowego, &lt;span class="caps"&gt;REST&lt;/span&gt;&amp;#8217;owego &lt;em&gt;scaffoldingu&lt;/em&gt;:&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="ident"&gt;ruby&lt;/span&gt; &lt;span class="ident"&gt;script&lt;/span&gt;&lt;span class="punct"&gt;/&lt;/span&gt;&lt;span class="ident"&gt;generate&lt;/span&gt; &lt;span class="ident"&gt;scaffold_resource&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Oczywi&#347;cie, musisz mie&#263; odpowiedni&#261; najnowsz&#261; wersj&#281; Rails&#243;w, kt&#243;r&#261; najlepiej zainstalowa&#263; za pomoc&#261; gems&#243;w:&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="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;span class="punct"&gt;-&lt;/span&gt;&lt;span class="ident"&gt;y&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;Nie przejmuj si&#281; jak wy&#347;wietli ci si&#281; co&#347; w stylu&lt;/p&gt;


&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby "&gt;&lt;span class="constant"&gt;Successfully&lt;/span&gt; &lt;span class="ident"&gt;installed&lt;/span&gt; &lt;span class="ident"&gt;rails&lt;/span&gt;&lt;span class="punct"&gt;-&lt;/span&gt;&lt;span class="number"&gt;1.1&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="number"&gt;6.5618&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;To jest tymczasowe oznaczenie dla wersji &lt;span class="caps"&gt;RC1&lt;/span&gt;. Jak wyjdzie wersja finalna to b&#281;dzie wy&#347;wietla&#263; si&#281; numer 1.2.&lt;/p&gt;


	&lt;p&gt;Trwaj&#261; jeszcze ko&#324;cowe prace nad &lt;a href="http://www.ryandaigle.com/articles/2006/06/30/whats-new-in-edge-rails-activeresource-is-here"&gt;Active Resource&lt;/a&gt;, modu&#322;em obs&#322;uguj&#261;cym &lt;span class="caps"&gt;REST&lt;/span&gt; i nowy spos&#243;b mapowania.&lt;/p&gt;


	&lt;p&gt;I ostatnia wiadomo&#347;&#263;, nadchodz&#261;ce w grudniu, drugie wydanie ksi&#261;&#380;ki &lt;a href="http://www.pragmaticprogrammer.com/titles/rails/index.html"&gt;Agile Web Development in Rails&lt;/a&gt; powinno wi&#281;kszo&#347;&#263; tych zmian uwzgl&#281;dnia&#263;, bo ksi&#261;&#380;ka jest pisana z za&#322;o&#380;eniem &#380;e u&#380;ywany jest Edge Rails (czyli najnowsza wersja z repozytorium &lt;span class="caps"&gt;SVN&lt;/span&gt;).&lt;/p&gt;</description>
      <pubDate>Sat, 25 Nov 2006 14:52:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:938bedec-dc6b-4d2a-9931-707270079dd5</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2006/11/25/ruby-on-rails-1-2-rc1</link>
      <category>Ruby on Rails</category>
      <category>rails</category>
    </item>
    <item>
      <title>"Ruby on Rails 1.2 RC1" by kompresory</title>
      <description>&lt;p&gt;Dok&#322;adnie, dlatego jestem wielkim fanem FireFox. Pozdrawiam&lt;/p&gt;</description>
      <pubDate>Mon, 20 Aug 2007 11:57:10 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:8116c16d-16e7-473c-8c76-1c81a455ffba</guid>
      <link>http://blog.zabiello.com/articles/2006/11/25/ruby-on-rails-1-2-rc1#comment-883</link>
    </item>
    <item>
      <title>"Ruby on Rails 1.2 RC1" by rsz</title>
      <description>&lt;p&gt;&amp;#8220;wi&#281;kszo&#347;&#263; przegl&#261;darek implementuje tylko GET I POST&amp;#8221; &amp;#8211; sk&#261;d takie informacje? Np. IE i FF od niepami&#281;tnych czas&#243;w implementuj&#261; bez problemu DELETE&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Mon, 27 Nov 2006 09:49:13 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:ea57913f-0d66-46c7-bd70-6a4c56c3f590</guid>
      <link>http://blog.zabiello.com/articles/2006/11/25/ruby-on-rails-1-2-rc1#comment-317</link>
    </item>
  </channel>
</rss>
