<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>script/html.rb</filename>
    </added>
    <added>
      <filename>text/01_ActiveRecord/0.markdown</filename>
    </added>
    <added>
      <filename>text/02_ActiveSupport/0.markdown</filename>
    </added>
    <added>
      <filename>text/03_ActiveResource/0.markdown</filename>
    </added>
    <added>
      <filename>text/04_ActionPack/0_title.markdown</filename>
    </added>
    <added>
      <filename>text/04_ActionPack/1_timezone.markdown</filename>
    </added>
    <added>
      <filename>text/04_ActionPack/2_auto_link.markdown</filename>
    </added>
    <added>
      <filename>text/04_ActionPack/3_labels.markdown</filename>
    </added>
    <added>
      <filename>text/04_ActionPack/4_partials.markdown</filename>
    </added>
    <added>
      <filename>text/04_ActionPack/5_atom_feed.markdown</filename>
    </added>
    <added>
      <filename>text/04_ActionPack/6_cache.markdown</filename>
    </added>
    <added>
      <filename>text/05_Railties/0.markdown</filename>
    </added>
    <added>
      <filename>text/06_Rake Tasks/0.markdown</filename>
    </added>
    <added>
      <filename>text/07_Ruby 1.9/0.markdown</filename>
    </added>
    <added>
      <filename>text/07_Ruby 1.9/1.markdown</filename>
    </added>
    <added>
      <filename>text/07_Ruby 1.9/2.markdown</filename>
    </added>
    <added>
      <filename>text/08_Prototype e script.aculo.us/0.markdown</filename>
    </added>
    <added>
      <filename>text/08_Prototype e script.aculo.us/1.markdown</filename>
    </added>
    <added>
      <filename>text/09_Debug/0.markdown</filename>
    </added>
    <added>
      <filename>text/09_Debug/1.markdown</filename>
    </added>
    <added>
      <filename nil="true"></filename>
    </added>
    <added>
      <filename nil="true"></filename>
    </added>
    <added>
      <filename nil="true"></filename>
    </added>
    <added>
      <filename nil="true"></filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1,4 +1,4 @@
 require 'script/merge'
-require 'script/textilize'
+require 'script/html'
 require 'script/pdf'
 require 'script/prince'
\ No newline at end of file</diff>
      <filename>Rakefile</filename>
    </modified>
    <modified>
      <diff>@@ -27,3 +27,9 @@ Sun Jun  1 01:43:09 2008: -:289: error: Opening and ending tag mismatch: p and s
 Sun Jun  1 01:43:09 2008: -:334: error: Unexpected end tag : strong
 Sun Jun  1 01:43:09 2008: finished: success
 Sun Jun  1 01:43:09 2008: ---- end
+Sun Jun  1 02:15:51 2008: ---- begin
+Sun Jun  1 02:15:52 2008: -:8: error: Tag front invalid
+Sun Jun  1 02:15:52 2008: -:9: error: Tag contents invalid
+Sun Jun  1 02:15:52 2008: -:10: error: htmlParseStartTag: misplaced &lt;body&gt; tag
+Sun Jun  1 02:15:53 2008: finished: success
+Sun Jun  1 02:15:53 2008: ---- end</diff>
      <filename>log/prince.log</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>output/book.pdf</filename>
    </modified>
    <modified>
      <diff>@@ -19,25 +19,32 @@
 
 &lt;h2&gt; TimeZone&lt;/h2&gt;
 
-&lt;p&gt;### Definindo um fuso-hor&#225;rio padr&#227;o&lt;/p&gt;
+&lt;h3&gt; Definindo um fuso-hor&#225;rio padr&#227;o&lt;/h3&gt;
 
-&lt;p&gt;Uma nova op&#231;&#227;o foi acrescentada ao m&#233;todo &lt;em&gt;time&lt;em&gt;zone&lt;/em&gt;select&lt;/em&gt;, agora voc&#234; pode indicar um valor padr&#227;o para os casos em que o seu usu&#225;rio ainda n&#227;o tenha selecionado nenhum &lt;em&gt;TimeZone&lt;/em&gt;, ou quando a coluna no banco de dados for nula. Para isto foi criada a op&#231;&#227;o :&lt;em&gt;default&lt;/em&gt;, ent&#227;o voc&#234; poder&#225; usar o m&#233;todo das seguintes maneiras:&lt;/p&gt;
+&lt;p&gt;Uma nova op&#231;&#227;o foi acrescentada ao m&#233;todo &lt;strong&gt;time_zone_select&lt;/strong&gt;, agora voc&#234; pode indicar um valor padr&#227;o para os casos em que o seu usu&#225;rio ainda n&#227;o tenha selecionado nenhum &lt;strong&gt;TimeZone&lt;/strong&gt;, ou quando a coluna no banco de dados for nula. Para isto foi criada a op&#231;&#227;o &lt;strong&gt;:default&lt;/strong&gt;, ent&#227;o voc&#234; poder&#225; usar o m&#233;todo das seguintes maneiras:&lt;/p&gt;
 
-&lt;p&gt;ruby. ActionPack/timezone.rb#default&lt;/p&gt;
+&lt;pre&gt;&lt;code&gt;time_zone_select(&quot;user&quot;, &quot;time_zone&quot;, nil, :include_blank =&amp;gt; true)
+time_zone_select(&quot;user&quot;, &quot;time_zone&quot;, nil, :default =&amp;gt; &quot;Pacific Time (US &amp;amp; Canada)&quot; ) 
+time_zone_select( &quot;user&quot;, 'time_zone', TimeZone.us_zones, :default =&amp;gt; &quot;Pacific Time (US &amp;amp; Canada)&quot;)
+&lt;/code&gt;&lt;/pre&gt;
 
-&lt;p&gt;Nos casos onde usamos a op&#231;&#227;o :&lt;em&gt;default&lt;/em&gt; deve aparecer com o &lt;em&gt;TimeZone&lt;/em&gt; informado j&#225; selecionado.&lt;/p&gt;
+&lt;p&gt;Nos casos onde usamos a op&#231;&#227;o &lt;strong&gt;:default&lt;/strong&gt; deve aparecer com o &lt;strong&gt;TimeZone&lt;/strong&gt; informado j&#225; selecionado.&lt;/p&gt;
 
 &lt;h2&gt; Auto Link&lt;/h2&gt;
 
-&lt;p&gt;Para quem n&#227;o conhece, o m&#233;todo &lt;em&gt;auto_link&lt;/em&gt; recebe um texto qualquer como par&#226;metro e se o texto tiver algum endere&#231;o de email ou de um site ele retorna o mesmo texto com hyperlinks.&lt;/p&gt;
+&lt;p&gt;Para quem n&#227;o conhece, o m&#233;todo &lt;strong&gt;auto_link&lt;/strong&gt; recebe um texto qualquer como par&#226;metro e se o texto tiver algum endere&#231;o de email ou de um site ele retorna o mesmo texto com hyperlinks.&lt;/p&gt;
 
 &lt;p&gt;Por exemplo:&lt;/p&gt;
 
-&lt;p&gt;ruby. ActionPack/auto_link.rb#exemplo1&lt;/p&gt;
+&lt;pre&gt;&lt;code&gt;auto_link(&quot;Acesse este endere&#231;o: http://www.rubyonrails.com&quot;)
+# =&amp;gt; Acesse este endere&#231;o: http://www.rubyonrails.com
+&lt;/code&gt;&lt;/pre&gt;
 
 &lt;p&gt;Acontece que alguns sites como o Amazon est&#227;o usando tamb&#233;m o sinal de &quot;=&quot; (igual) em suas URLs, e este m&#233;todo n&#227;o reconhece este sinal. Veja como o m&#233;todo se comporta neste caso:&lt;/p&gt;
 
-&lt;p&gt;ruby. ActionPack/auto_link.rb#exemplo2&lt;/p&gt;
+&lt;pre&gt;&lt;code&gt;auto_link(&quot;Acesse este endere&#231;o: http://www.amazon.com/Testing-Equal-Sign-In-Path/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1198861734&amp;amp;sr=8-1&quot;)
+# =&amp;gt; Acesse este endere&#231;o: http://www.amazon.com/Testing-Equal-Sign-In-Path/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1198861734&amp;amp;sr=8-1
+&lt;/code&gt;&lt;/pre&gt;
 
 &lt;p&gt;Note que o m&#233;todo terminou o hyperlink exatamente antes do sinal de &quot;=&quot;, pois ele n&#227;o suporta este sinal. Quer dizer, n&#227;o suportava. Nesta nova vers&#227;o do Rails j&#225; temos este problema resolvido.&lt;/p&gt;
 
@@ -60,7 +67,7 @@
 &amp;lt;% end %&amp;gt;
 &lt;/code&gt;&lt;/pre&gt;
 
-&lt;p&gt;Desta forma faz muito mais sentido. O m&#233;todo &lt;em&gt;label&lt;/em&gt; foi inclu&#237;do. Este m&#233;todo retorna uma &lt;em&gt;string&lt;/em&gt; com o t&#237;tulo da coluna dentro de uma tag HTML &lt;em&gt;&lt;label&gt;&lt;/em&gt;.&lt;/p&gt;
+&lt;p&gt;Desta forma faz muito mais sentido. O m&#233;todo &lt;strong&gt;label&lt;/strong&gt; foi inclu&#237;do. Este m&#233;todo retorna uma &lt;em&gt;string&lt;/em&gt; com o t&#237;tulo da coluna dentro de uma tag HTML &lt;strong&gt;&amp;lt;label&gt;&lt;/strong&gt;.&lt;/p&gt;
 
 &lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt; f.label :title
 =&amp;gt; &amp;lt;label for=&quot;post_title&quot;&amp;gt;Title&amp;lt;/label&amp;gt;
@@ -72,11 +79,11 @@
 =&amp;gt; &amp;lt;label for=&quot;post_title&quot; class=&quot;title_label&quot;&amp;gt;A short title&amp;lt;/label&amp;gt;
 &lt;/code&gt;&lt;/pre&gt;
 
-&lt;p&gt;Percebeu o par&#226;metro &lt;em&gt;for&lt;/em&gt; dentro da tag? O &quot;post&lt;em&gt;title&quot; &#233; o nome da caixa de texto que cont&#233;m o t&#237;tulo do nosso post. A tag &lt;em&gt;&lt;label&gt;&lt;/em&gt; &#233; na verdade um r&#243;tulo associado ao objeto *post&lt;/em&gt;title*. Quando se clica no r&#243;tulo (ele n&#227;o &#233; um link) o controle associado &#224; ele recebe o foco.&lt;/p&gt;
+&lt;p&gt;Percebeu o par&#226;metro &lt;strong&gt;for&lt;/strong&gt; dentro da tag? O &quot;post_title&quot; &#233; o nome da caixa de texto que cont&#233;m o t&#237;tulo do nosso post. A tag &lt;strong&gt;&amp;lt;label&gt;&lt;/strong&gt; &#233; na verdade um r&#243;tulo associado ao objeto &lt;strong&gt;post_title&lt;/strong&gt;. Quando se clica no r&#243;tulo (ele n&#227;o &#233; um link) o controle associado &#224; ele recebe o foco.&lt;/p&gt;
 
 &lt;p&gt;Robby Russell escreveu um artigo interessante em seu blog sobre este assunto. Voc&#234; pode l&#234;-lo no endere&#231;o: &lt;a href=&quot;http://www.robbyonrails.com/articles/2007/12/02/that-checkbox-needs-a-label&quot;&gt;http://www.robbyonrails.com/articles/2007/12/02/that-checkbox-needs-a-label&lt;/a&gt;&lt;/p&gt;
 
-&lt;p&gt;Tamb&#233;m foi inclu&#237;do o m&#233;todo &lt;em&gt;label_tag&lt;/em&gt; no &lt;em&gt;FormTagHelper&lt;/em&gt;. Este m&#233;todo funciona exatamente como o label mas de uma forma mais simplista:&lt;/p&gt;
+&lt;p&gt;Tamb&#233;m foi inclu&#237;do o m&#233;todo &lt;strong&gt;label_tag&lt;/strong&gt; no &lt;strong&gt;FormTagHelper&lt;/strong&gt;. Este m&#233;todo funciona exatamente como o label mas de uma forma mais simplista:&lt;/p&gt;
 
 &lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt; label_tag 'nome'
 =&amp;gt; &amp;lt;label for=&quot;nome&quot;&amp;gt;Nome&amp;lt;/label&amp;gt; 
@@ -98,7 +105,7 @@
 &amp;lt;% end %&amp;gt;
 &lt;/code&gt;&lt;/pre&gt;
 
-&lt;p&gt;Partial &#233; um fragmento de c&#243;digo (um template). A vantagem de se usar uma partial &#233; evitar a repeti&#231;&#227;o desnecess&#225;ria de c&#243;digo. Para usar uma partial &#233; muito simples, voc&#234; pode come&#231;ar com algo mais ou menos assim: &lt;em&gt;render :partial =&gt; &#8220;name&#8221;&lt;/em&gt;. Depois deve criar um arquivo com o mesmo nome da partial, mas com um underscore na frente, s&#243; isso.&lt;/p&gt;
+&lt;p&gt;Partial &#233; um fragmento de c&#243;digo (um template). A vantagem de se usar uma partial &#233; evitar a repeti&#231;&#227;o desnecess&#225;ria de c&#243;digo. Para usar uma partial &#233; muito simples, voc&#234; pode come&#231;ar com algo mais ou menos assim: &lt;strong&gt;render :partial =&gt; &quot;name&quot;&lt;/strong&gt;. Depois deve criar um arquivo com o mesmo nome da partial, mas com um underscore na frente, s&#243; isso.&lt;/p&gt;
 
 &lt;p&gt;O c&#243;digo acima &#233; a forma como estamos acostumados a fazer hoje, mas nesta nova vers&#227;o do Rails, faremos a mesma coisa de uma forma um pouco diferente, assim:&lt;/p&gt;
 
@@ -108,13 +115,13 @@
 &amp;lt;% end %&amp;gt;
 &lt;/code&gt;&lt;/pre&gt;
 
-&lt;p&gt;Neste exemplo n&#243;s vamos renderizar a partial &#8220;users/_form&#8221;, que receber&#225; uma vari&#225;vel chamada form com as refer&#234;ncias criadas pelo &lt;em&gt;FormBuilder&lt;/em&gt;.&lt;/p&gt;
+&lt;p&gt;Neste exemplo n&#243;s vamos renderizar a partial &quot;users/_form&quot;, que receber&#225; uma vari&#225;vel chamada form com as refer&#234;ncias criadas pelo &lt;strong&gt;FormBuilder&lt;/strong&gt;.&lt;/p&gt;
 
 &lt;p&gt;A forma antiga tamb&#233;m vai continuar funcionando.&lt;/p&gt;
 
 &lt;h2&gt; Novos namespaces no Atom Feed&lt;/h2&gt;
 
-&lt;p&gt;Conhece o m&#233;todo &lt;em&gt;atom_feed&lt;/em&gt;? Ele &#233; uma novidade no Rails 2.0, que facilitou muito a cria&#231;&#227;o de feeds Atom. Veja um exemplo de uso:&lt;/p&gt;
+&lt;p&gt;Conhece o m&#233;todo &lt;strong&gt;atom_feed&lt;/strong&gt;? Ele &#233; uma novidade no Rails 2.0, que facilitou muito a cria&#231;&#227;o de feeds Atom. Veja um exemplo de uso:&lt;/p&gt;
 
 &lt;p&gt;Em um arquivo &lt;em&gt;index.atom.builder&lt;/em&gt;:&lt;/p&gt;
 
@@ -137,7 +144,7 @@ end
 
 &lt;p&gt;O que &#233; um atom feed? Atom &#233; o nome de um estilo baseado em XML e meta data. Em outras palavras &#233; um protocolo quer serve para publicar conte&#250;do na internet que &#233; sempre atualizado, como um blog, por exemplo. Os feeds sempre s&#227;o publicados em XML e no caso do Atom Feed ele &#233; identificado como application/atom+xml media type.&lt;/p&gt;
 
-&lt;p&gt;Nas primeiras vers&#245;es do Rails 2.0 este m&#233;todo aceitava como par&#226;metros as op&#231;&#245;es &lt;em&gt;:language&lt;/em&gt;, &lt;em&gt;:root_url&lt;/em&gt; e &lt;em&gt;:url&lt;/em&gt;, voc&#234; pode obter mais informa&#231;&#245;es sobre estes m&#233;todos na documenta&#231;&#227;o do Rails. Mas com a altera&#231;&#227;o realizada, agora podemos incluir novos namespaces ao elemento root do feed. Por exemplo, se fizermos assim:&lt;/p&gt;
+&lt;p&gt;Nas primeiras vers&#245;es do Rails 2.0 este m&#233;todo aceitava como par&#226;metros as op&#231;&#245;es &lt;strong&gt;:language&lt;/strong&gt;, &lt;strong&gt;:root_url&lt;/strong&gt; e &lt;strong&gt;:url&lt;/strong&gt;, voc&#234; pode obter mais informa&#231;&#245;es sobre estes m&#233;todos na documenta&#231;&#227;o do Rails. Mas com a altera&#231;&#227;o realizada, agora podemos incluir novos namespaces ao elemento root do feed. Por exemplo, se fizermos assim:&lt;/p&gt;
 
 &lt;pre&gt;&lt;code&gt;atom_feed('xmlns:app' =&amp;gt; 'http://www.w3.org/2007/app') do |feed|
 &lt;/code&gt;&lt;/pre&gt;
@@ -172,13 +179,13 @@ end
 
 &lt;h2&gt; Cache&lt;/h2&gt;
 
-&lt;p&gt;Todos os m&#233;todos &lt;em&gt;fragment&lt;em&gt;cache&lt;/em&gt;key&lt;/em&gt; agora retornam por padr&#227;o o namespace 'view/' como prefixo.&lt;/p&gt;
+&lt;p&gt;Todos os m&#233;todos &lt;strong&gt;fragment_cache_key&lt;/strong&gt; agora retornam por padr&#227;o o namespace 'view/' como prefixo.&lt;/p&gt;
 
-&lt;p&gt;Todos os caching stores foram retirados de &lt;em&gt;ActionController::Caching::Fragments::** e agora est&#227;o em &lt;/em&gt;ActiveSupport::Cache::&lt;em&gt;*. Neste caso se voc&#234; faz refer&#234;ncia a um store, como &lt;/em&gt;ActionController::Caching::Fragments::MemoryStore&lt;em&gt;, por exemplo, ser&#225; necess&#225;rio alterar sua refer&#234;ncia para &lt;/em&gt;ActiveSupport::Cache::MemoryStore*.&lt;/p&gt;
+&lt;p&gt;Todos os caching stores foram retirados de &lt;strong&gt;ActionController::Caching::Fragments::&lt;/strong&gt;&lt;em&gt; e agora est&#227;o em &lt;strong&gt;ActiveSupport::Cache::&lt;/strong&gt;&lt;/em&gt;. Neste caso se voc&#234; faz refer&#234;ncia a um store, como &lt;strong&gt;ActionController::Caching::Fragments::MemoryStore&lt;/strong&gt;, por exemplo, ser&#225; necess&#225;rio alterar sua refer&#234;ncia para &lt;strong&gt;ActiveSupport::Cache::MemoryStore&lt;/strong&gt;.&lt;/p&gt;
 
-&lt;p&gt;&lt;em&gt;ActionController::Base.fragment&lt;em&gt;cache&lt;/em&gt;store&lt;/em&gt; deixa de existir e d&#225; lugar &#224; &lt;em&gt;ActionController::Base.cache_store&lt;/em&gt;.&lt;/p&gt;
+&lt;p&gt;&lt;strong&gt;ActionController::Base.fragment_cache_store&lt;/strong&gt; deixa de existir e d&#225; lugar &#224; &lt;strong&gt;ActionController::Base.cache_store&lt;/strong&gt;.&lt;/p&gt;
 
-&lt;p&gt;Foi inclu&#237;do no &lt;em&gt;ActiveRecord::Base&lt;/em&gt; o m&#233;todo &lt;em&gt;cache_key&lt;/em&gt; para facilitar o armazenamento em cache de Active Records pelas novas bibliotecas *ActiveSupport::Cache::**. Este m&#233;todo funciona assim:&lt;/p&gt;
+&lt;p&gt;Foi inclu&#237;do no &lt;strong&gt;ActiveRecord::Base&lt;/strong&gt; o m&#233;todo &lt;strong&gt;cache_key&lt;/strong&gt; para facilitar o armazenamento em cache de Active Records pelas novas bibliotecas &lt;strong&gt;ActiveSupport::Cache::&lt;/strong&gt;*. Este m&#233;todo funciona assim:&lt;/p&gt;
 
 &lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt; Product.new.cache_key
 =&amp;gt; &quot;products/new&quot;
@@ -190,9 +197,9 @@ end
 =&amp;gt; &quot;people/5-20071224150000&quot;
 &lt;/code&gt;&lt;/pre&gt;
 
-&lt;p&gt;Foi inclu&#237;do o &lt;em&gt;ActiveSupport::Gzip.decompress/compress&lt;/em&gt; para facilitar o wrapper para o &lt;strong&gt;Zlib&lt;/strong&gt;.&lt;/p&gt;
+&lt;p&gt;Foi inclu&#237;do o &lt;strong&gt;ActiveSupport::Gzip.decompress/compress&lt;/strong&gt; para facilitar o wrapper para o &lt;strong&gt;Zlib&lt;/strong&gt;.&lt;/p&gt;
 
-&lt;p&gt;Agora voc&#234; pode usar entre as op&#231;&#245;es de environment o &lt;em&gt;config.cache_store&lt;/em&gt; para informar o local padr&#227;o de armazenamento do cache. Vale lembrar que se o diret&#243;rio &lt;em&gt;tmp/cache&lt;/em&gt; existir o padr&#227;o &#233; o &lt;em&gt;FileStore&lt;/em&gt;, caso contr&#225;rio o &lt;em&gt;MemoryStore&lt;/em&gt; &#233; usado. Voc&#234; pode configurar das seguintes formas:&lt;/p&gt;
+&lt;p&gt;Agora voc&#234; pode usar entre as op&#231;&#245;es de environment o &lt;strong&gt;config.cache_store&lt;/strong&gt; para informar o local padr&#227;o de armazenamento do cache. Vale lembrar que se o diret&#243;rio &lt;strong&gt;tmp/cache&lt;/strong&gt; existir o padr&#227;o &#233; o &lt;strong&gt;FileStore&lt;/strong&gt;, caso contr&#225;rio o &lt;strong&gt;MemoryStore&lt;/strong&gt; &#233; usado. Voc&#234; pode configurar das seguintes formas:&lt;/p&gt;
 
 &lt;pre&gt;&lt;code&gt;config.cache_store = :memory_store
 config.cache_store = :file_store, &quot;/path/to/cache/directory&quot;
@@ -215,13 +222,13 @@ config.cache_store = MyOwnStore.new(&quot;parameter&quot;)
 
 &lt;h2&gt; Detalhes&lt;/h2&gt;
 
-&lt;p&gt;O principal foco das altera&#231;&#245;es do Rails foi o Ruby 1.9, mesmo os menores detalhes foram analisados para deixar o Rails o mais compat&#237;vel poss&#237;vel com a nova vers&#227;o do Ruby. Detalhes como alterar de &lt;em&gt;File.exists?&lt;/em&gt; para &lt;em&gt;File.exist?&lt;/em&gt; n&#227;o foram deixados de fora.&lt;/p&gt;
+&lt;p&gt;O principal foco das altera&#231;&#245;es do Rails foi o Ruby 1.9, mesmo os menores detalhes foram analisados para deixar o Rails o mais compat&#237;vel poss&#237;vel com a nova vers&#227;o do Ruby. Detalhes como alterar de &lt;strong&gt;File.exists?&lt;/strong&gt; para &lt;strong&gt;File.exist?&lt;/strong&gt; n&#227;o foram deixados de fora.&lt;/p&gt;
 
-&lt;p&gt;Tamb&#233;m, no Ruby 1.9, o m&#243;dulo &lt;em&gt;Base64&lt;/em&gt; (base64.rb) foi removido, por isto todas as referencias a ele foram substitu&#237;das por &lt;em&gt;ActiveSupport::Base64&lt;/em&gt;.&lt;/p&gt;
+&lt;p&gt;Tamb&#233;m, no Ruby 1.9, o m&#243;dulo &lt;strong&gt;Base64&lt;/strong&gt; (base64.rb) foi removido, por isto todas as referencias a ele foram substitu&#237;das por &lt;strong&gt;ActiveSupport::Base64&lt;/strong&gt;.&lt;/p&gt;
 
 &lt;h2&gt; Novos m&#233;todos para a classe DateTime&lt;/h2&gt;
 
-&lt;p&gt;Outra altera&#231;&#227;o interessante para a nova vers&#227;o. Para manter a compatibilidade (duck-typing) com a classe &lt;em&gt;Time&lt;/em&gt;, tr&#234;s m&#233;todos novos foram adicionados &#224; classe &lt;em&gt;DateTime&lt;/em&gt;. Os m&#233;todos s&#227;o &lt;em&gt;#utc&lt;/em&gt;, &lt;em&gt;#utc?&lt;/em&gt; e &lt;em&gt;#utc_offset&lt;/em&gt;. Vamos ver um exemplo de uso de cada um:&lt;/p&gt;
+&lt;p&gt;Outra altera&#231;&#227;o interessante para a nova vers&#227;o. Para manter a compatibilidade (duck-typing) com a classe &lt;strong&gt;Time&lt;/strong&gt;, tr&#234;s m&#233;todos novos foram adicionados &#224; classe &lt;strong&gt;DateTime&lt;/strong&gt;. Os m&#233;todos s&#227;o &lt;strong&gt;#utc&lt;/strong&gt;, &lt;strong&gt;#utc?&lt;/strong&gt; e &lt;strong&gt;#utc_offset&lt;/strong&gt;. Vamos ver um exemplo de uso de cada um:&lt;/p&gt;
 
 &lt;pre&gt;&lt;code&gt;&amp;gt;&amp;gt; date = DateTime.civil(2005, 2, 21, 10, 11, 12, Rational(-6, 24))
 #=&amp;gt; Mon, 21 Feb 2005 10:11:12 -0600
@@ -251,7 +258,7 @@ config.cache_store = MyOwnStore.new(&quot;parameter&quot;)
 
 &lt;p&gt;Foi habilitada novamente a op&#231;&#227;o de usar o &lt;strong&gt;ruby-debug&lt;/strong&gt; nos testes do Rails.&lt;/p&gt;
 
-&lt;p&gt;Se antes voc&#234; desejasse us&#225;-lo nos testes seria necess&#225;rio incluir um &lt;em&gt;require 'ruby-debug'&lt;/em&gt; na classe e logo em seguida usar o m&#233;todo &lt;em&gt;debugger&lt;/em&gt; no local desejado. Agora s&#243; se preocupe com o m&#233;todo &lt;em&gt;debugger&lt;/em&gt;, o resto &#233; nativo, desde que voc&#234; j&#225; tenha o gem instalado.&lt;/p&gt;
+&lt;p&gt;Se antes voc&#234; desejasse us&#225;-lo nos testes seria necess&#225;rio incluir um &lt;strong&gt;require 'ruby-debug'&lt;/strong&gt; na classe e logo em seguida usar o m&#233;todo &lt;strong&gt;debugger&lt;/strong&gt; no local desejado. Agora s&#243; se preocupe com o m&#233;todo &lt;strong&gt;debugger&lt;/strong&gt;, o resto &#233; nativo, desde que voc&#234; j&#225; tenha o gem instalado.&lt;/p&gt;
 
 &lt;h1&gt; Bugs e Corre&#231;&#245;es&lt;/h1&gt;
 
@@ -259,7 +266,7 @@ config.cache_store = MyOwnStore.new(&quot;parameter&quot;)
 
 &lt;p&gt;Havia um bug ao se usar o banco de dados &lt;strong&gt;PostgreSQL&lt;/strong&gt;. O bug ocorria quando se criava uma migration para adicionar uma coluna em uma tabela j&#225; existente, veja um exemplo:&lt;/p&gt;
 
-&lt;p&gt;Arquivo: &lt;em&gt;db/migrate/002&lt;em&gt;add&lt;/em&gt;cost.rb&lt;/em&gt;&lt;/p&gt;
+&lt;p&gt;Arquivo: &lt;em&gt;db/migrate/002_add_cost.rb&lt;/em&gt;&lt;/p&gt;
 
 &lt;pre&gt;&lt;code&gt;class AddCost &amp;lt; ActiveRecord::Migration
   def self.up
@@ -273,13 +280,13 @@ config.cache_store = MyOwnStore.new(&quot;parameter&quot;)
 end
 &lt;/code&gt;&lt;/pre&gt;
 
-&lt;p&gt;Note que estou criando uma coluna com &lt;em&gt;:precision =&gt; 6&lt;/em&gt; e &lt;em&gt;:scale =&gt; 2&lt;/em&gt;. Agora &#233; hora de rodar o &lt;em&gt;rake db:migrate&lt;/em&gt; e vamos ver como ficou nossa tabela no banco:&lt;/p&gt;
+&lt;p&gt;Note que estou criando uma coluna com &lt;strong&gt;:precision =&gt; 6&lt;/strong&gt; e &lt;strong&gt;:scale =&gt; 2&lt;/strong&gt;. Agora &#233; hora de rodar o &lt;strong&gt;rake db:migrate&lt;/strong&gt; e vamos ver como ficou nossa tabela no banco:&lt;/p&gt;
 
-&lt;table border=&quot;0&quot; cellspacing=&quot;5&quot; cellpadding=&quot;5&quot;&gt;
+&lt;table border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;5&quot;&gt;
     &lt;tr&gt;
-        &lt;th&gt;Column&lt;/th&gt;
-        &lt;th&gt;Type&lt;/th&gt;
-        &lt;th&gt;Modifiers&lt;/th&gt;
+        &lt;td&gt;&lt;strong&gt;Column&lt;/strong&gt;&lt;/td&gt;
+        &lt;td&gt;&lt;strong&gt;Type&lt;/strong&gt;&lt;/td&gt;
+        &lt;td&gt;&lt;strong&gt;Modifiers&lt;/strong&gt;&lt;/td&gt;
     &lt;/tr&gt;
     &lt;tr&gt;
         &lt;td&gt;id&lt;/td&gt;
@@ -304,7 +311,7 @@ end
 &lt;/table&gt;
 
 
-&lt;p&gt;Veja a coluna &quot;cost&quot; que acabamos de criar. Ela &#233; um &lt;em&gt;numeric&lt;/em&gt; comum, mas deveria ser uma coluna como a &quot;price&quot;, logo acima dela, mais precisamente um &lt;em&gt;numeric(6,2)&lt;/em&gt;. Nesta vers&#227;o este erro n&#227;o existe mais, a coluna ser&#225; criada da forma correta neste banco de dados.&lt;/p&gt;
+&lt;p&gt;Veja a coluna &quot;cost&quot; que acabamos de criar. Ela &#233; um &lt;strong&gt;numeric&lt;/strong&gt; comum, mas deveria ser uma coluna como a &quot;price&quot;, logo acima dela, mais precisamente um &lt;strong&gt;numeric(6,2)&lt;/strong&gt;. Nesta vers&#227;o este erro n&#227;o existe mais, a coluna ser&#225; criada da forma correta neste banco de dados.&lt;/p&gt;
 
 &lt;h1&gt; Informa&#231;&#245;es Adicionais&lt;/h1&gt;
 
@@ -319,7 +326,7 @@ end
 end
 &lt;/code&gt;&lt;/pre&gt;
 
-&lt;p&gt;Note a chamada para o m&#233;todo &lt;em&gt;protect&lt;em&gt;from&lt;/em&gt;forgery&lt;/em&gt;.&lt;/p&gt;
+&lt;p&gt;Note a chamada para o m&#233;todo &lt;strong&gt;protect_from_forgery&lt;/strong&gt;.&lt;/p&gt;
 
 &lt;p&gt;J&#225; ouviu falar de Cross Site Scripting? Este &#233; o nome de uma falha de seguran&#231;a encontrada facilmente em grande parte dos websites e aplica&#231;&#245;es web que permite &#224; pessoas maldosas (aqui estou me referindo &#224; adolescentes sem nada para fazer e sem vida social) alterarem o conte&#250;do de p&#225;ginas web, inclu&#237;rem conte&#250;do hostil, executarem ataques de phishing, obterem o controle do navegador atrav&#233;s de c&#243;digos JavaScript e na maioria dos casos for&#231;arem o usu&#225;rio a executar algum comando que eles desejem. Este &#250;ltimo tipo de ataque se chama cross&#173;site request forgeries.&lt;/p&gt;
 </diff>
      <filename>output/index.html</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,5 @@
 desc 'Cria um arquivo pdf &#224; partir do html gerado'
-task :to_pdf =&gt; :textilize do
+task :pdf =&gt; :html do
   prince = Prince.new()
   prince.add_style_sheets 'layout/coderay.css', 'layout/default.css'
   </diff>
      <filename>script/pdf.rb</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>text/.DS_Store</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>code/ActionPack/auto_link.rb</filename>
    </removed>
    <removed>
      <filename>code/ActionPack/label.html.erb</filename>
    </removed>
    <removed>
      <filename>code/ActionPack/timezone.rb</filename>
    </removed>
    <removed>
      <filename>script/textilize.rb</filename>
    </removed>
    <removed>
      <filename>text/01_ActiveRecord/0.textile</filename>
    </removed>
    <removed>
      <filename>text/02_ActiveSupport/0.textile</filename>
    </removed>
    <removed>
      <filename>text/03_ActiveResource/0.textile</filename>
    </removed>
    <removed>
      <filename>text/04_ActionPack/0_title.textile</filename>
    </removed>
    <removed>
      <filename>text/04_ActionPack/1_timezone.textile</filename>
    </removed>
    <removed>
      <filename>text/04_ActionPack/2_auto_link.textile</filename>
    </removed>
    <removed>
      <filename>text/04_ActionPack/3_labels.textile</filename>
    </removed>
    <removed>
      <filename>text/04_ActionPack/4_partials.textile</filename>
    </removed>
    <removed>
      <filename>text/04_ActionPack/5_atom_feed.textile</filename>
    </removed>
    <removed>
      <filename>text/04_ActionPack/6_cache.textile</filename>
    </removed>
    <removed>
      <filename>text/05_Railties/0.textile</filename>
    </removed>
    <removed>
      <filename>text/06_Rake Tasks/0.textile</filename>
    </removed>
    <removed>
      <filename>text/07_Ruby 1.9/0.textile</filename>
    </removed>
    <removed>
      <filename>text/07_Ruby 1.9/1.textile</filename>
    </removed>
    <removed>
      <filename>text/07_Ruby 1.9/2.textile</filename>
    </removed>
    <removed>
      <filename>text/08_Prototype e script.aculo.us/0.textile</filename>
    </removed>
    <removed>
      <filename>text/08_Prototype e script.aculo.us/1.textile</filename>
    </removed>
    <removed>
      <filename>text/09_Debug/0.textile</filename>
    </removed>
    <removed>
      <filename>text/09_Debug/1.textile</filename>
    </removed>
    <removed>
      <filename nil="true"></filename>
    </removed>
    <removed>
      <filename nil="true"></filename>
    </removed>
    <removed>
      <filename nil="true"></filename>
    </removed>
    <removed>
      <filename nil="true"></filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>c2c938c058b47373c3a27cdfde6aea2184e7d039</id>
    </parent>
  </parents>
  <author>
    <name>Carlos Brando</name>
    <email>eduardobrando@gmail.com</email>
  </author>
  <url>http://github.com/escobera/rails21-book/commit/8b970bed436465188ed4dd3c14015763cac4b832</url>
  <id>8b970bed436465188ed4dd3c14015763cac4b832</id>
  <committed-date>2008-05-31T22:17:13-07:00</committed-date>
  <authored-date>2008-05-31T22:17:13-07:00</authored-date>
  <message>Change to Markdown.</message>
  <tree>73f9d03434a811ac700225fed313a8eb7c4ef50d</tree>
  <committer>
    <name>Carlos Brando</name>
    <email>eduardobrando@gmail.com</email>
  </committer>
</commit>
