<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/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>boa idéia software livre: Category rails</title>
    <link>http://blog.boaideia.inf.br/articles/category/rails</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>a personalidade jurídica de andré ribeiro camargo</description>
    <item>
      <title>Timezone no Rails3</title>
      <description>&lt;p&gt;Ainda não coloquei em produção a nova versão dos shoppings em Rails3.&lt;/p&gt;


	&lt;p&gt;Inicialmente, resolvi migrar as rotinas de retaguarda (que rodam pelo cron).&lt;/p&gt;


	&lt;p&gt;Foi aí que me dei por conta que a nova aplicação estava &amp;#8220;ratiando&amp;#8221; com as datas e horas.&lt;/p&gt;


	&lt;p&gt;Para deixar como funcionava no Rails 1.1.6, coloquei no config/application.rb:&lt;/p&gt;


&lt;pre&gt;
config.time_zone = 'Brasilia'
config.active_record.default_timezone = :local
&lt;/pre&gt;

	&lt;p&gt;Parece que agora está tudo OK novamente&amp;#8230;&lt;/p&gt;


	&lt;p&gt;2011 já chegou, tenho que fazê-lo melhor do que o ano passado. Particularmente não gostei de 2010, ainda bem que terminou.&lt;/p&gt;</description>
      <pubDate>Wed, 12 Jan 2011 13:20:00 -0200</pubDate>
      <guid isPermaLink="false">urn:uuid:ffc3a06b-b9ce-44de-b3cb-d6ebfbea9b52</guid>
      <author>André Ribeiro Camargo</author>
      <link>http://blog.boaideia.inf.br/articles/2011/01/12/timezone-no-rails3</link>
      <category>trabalho</category>
      <category>nerd</category>
      <category>rails</category>
      <category>shoppings</category>
    </item>
    <item>
      <title>Não faça como eu...</title>
      <description>&lt;p&gt;Se ao tentar instalar o &lt;a href="http://rvm.beginrescueend.com/"&gt;&lt;span class="caps"&gt;RVM&lt;/span&gt;&lt;/a&gt; acontecer algo semelhante a&lt;/p&gt;


&lt;pre&gt;
acamargo@storm:~$ bash &amp;lt; &amp;lt;( curl http://rvm.beginrescueend.com/releases/rvm-install-head )
-sh: syntax error near unexpected token `&amp;lt;'
&lt;/pre&gt;

	&lt;p&gt;Certifique-se que tenha &lt;span class="caps"&gt;CURL&lt;/span&gt; instalado!!!&lt;/p&gt;</description>
      <pubDate>Tue, 30 Nov 2010 23:16:00 -0200</pubDate>
      <guid isPermaLink="false">urn:uuid:e7f0fdd6-41b3-40da-a2fc-6ccef7c7b7a0</guid>
      <author>André Ribeiro Camargo</author>
      <link>http://blog.boaideia.inf.br/articles/2010/11/30/n%C3%A3o-fa%C3%A7a-como-eu</link>
      <category>trabalho</category>
      <category>nerd</category>
      <category>rails</category>
    </item>
    <item>
      <title>Aleluia!</title>
      <description>&lt;p&gt;Pela primeira vez na minha vida, vejo isso:&lt;/p&gt;


&lt;pre&gt;
andre@amazonpc:~/rails/shopping3$ rake
(in /home/andre/rails/shopping3)
Loaded suite /home/andre/.rvm/gems/ree-1.8.7-2010.02/gems/rake-0.8.7/lib/rake/rake_test_loader
Started
..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Finished in 10077.328468 seconds.

2062 tests, 36943 assertions, 0 failures, 0 errors
&lt;/pre&gt;

	&lt;p&gt;Significa que todos os testes de integração do shopping passaram.&lt;/p&gt;


	&lt;p&gt;Leva quase 3h para rodar tudo, que dureza.&lt;/p&gt;


	&lt;p&gt;Mas, me encheu de coragem para colocar em produção :-)&lt;/p&gt;


	&lt;p&gt;Estamos próximos do final da migração para Rails3, aleluia!&lt;/p&gt;</description>
      <pubDate>Sat, 27 Nov 2010 19:54:00 -0200</pubDate>
      <guid isPermaLink="false">urn:uuid:139d0e49-db90-4d33-ac86-88a24a675149</guid>
      <author>André Ribeiro Camargo</author>
      <link>http://blog.boaideia.inf.br/articles/2010/11/27/aleluia</link>
      <category>trabalho</category>
      <category>nerd</category>
      <category>rails</category>
      <category>shoppings</category>
    </item>
    <item>
      <title>Primeiro patch aceito a gente nunca esquece</title>
      <description>&lt;p&gt;Ando quieto por aqui porque o bicho tá pegando na migração da aplicação dos shoppings de Rails 1.1.6 para 3.0.&lt;/p&gt;


	&lt;p&gt;Já tenho testes de integração de todos módulos do sistema, em vários contextos. São mais de 100 arquivos&amp;#8230;&lt;/p&gt;


	&lt;p&gt;Durante este trabalho, acabei descobrindo alguns probleminhas no Rails. O primeiro deles (&lt;a href="https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/5812-fix-for-actionviewtemplaterefresh-in-rails-310beta"&gt;Fix for ActionView::Template#refresh in rails 3.1.0.beta&lt;/a&gt;) já reportei foi incluído no framework. Já o segundo ainda falta criar um teste que reproduza o problema e demonstre que foi resolvido.&lt;/p&gt;


	&lt;p&gt;Nosso servidor de testes já está rodando a versão em Rails 3, mas ainda não está maduro suficiente para publicar em produção.&lt;/p&gt;


	&lt;p&gt;De qualquer forma, gostaria muito de concluir isso ainda este mês.&lt;/p&gt;


	&lt;p&gt;&lt;span class="caps"&gt;EM TEMPO&lt;/span&gt;, fui me dar por conta somente agora que dia 14 do mês &lt;span class="caps"&gt;PASSADO&lt;/span&gt; o PelotasCenter completou 4 anos &amp;#8220;no ar&amp;#8221;, parabéns a toda equipe o fica meu &lt;span class="caps"&gt;MUITO OBRIGADO&lt;/span&gt; a todos clientes que tornaram isso possível. Ontem ainda publicamos o novo site da &lt;a href="http://www.emilicecalcados.com.br" title="www.emilicecalcados.com.br"&gt;Emilice Calçados&lt;/a&gt; e da &lt;a href="http://www.aeapel.com.br" title="www.aeapel.com.br"&gt;Associação dos Engenheiros Agrônomos de Pelotas&lt;/a&gt; arredondando a conta para 50 sites participantes do portal de negócios pelotense.&lt;/p&gt;


	&lt;p&gt;Por enquanto era isso, eu mando notícias.&lt;/p&gt;</description>
      <pubDate>Fri, 15 Oct 2010 08:07:00 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:f90f8b1e-bf02-4ff6-a62d-4e5ccc74a9fc</guid>
      <author>André Ribeiro Camargo</author>
      <link>http://blog.boaideia.inf.br/articles/2010/10/15/primeiro-patch-a-gente-nunca-esquece</link>
      <category>trabalho</category>
      <category>pessoa jurídica</category>
      <category>rails</category>
      <category>shoppings</category>
    </item>
    <item>
      <title>ActionMailer do Rails 3</title>
      <description>&lt;p&gt;ActionMailer é uma biblioteca do Rails que trata da manipulação de e-mails e nesta versão 3.0 teve várias melhorias.&lt;/p&gt;


	&lt;p&gt;Antigamente, você passava parâmetros para &amp;#8220;view&amp;#8221; através do método &amp;#8220;body&amp;#8221;, mas, na nova implementação você define os parâmetros como variáveis de instância na action do mailer e depois simplesmente as referencia na view.&lt;/p&gt;


	&lt;p&gt;Demorei algumas horas para me dar por conta disso, &amp;#8220;herança&amp;#8221; da versão antiga.&lt;/p&gt;


	&lt;p&gt;Para finalizar, se quiser usar os helpers na view do mailer, inclua na classe do mailer:&lt;/p&gt;


&lt;pre&gt;
helper :application
&lt;/pre&gt;

	&lt;p&gt;Essa dica veio &lt;a href="http://www.ruby-forum.com/topic/89508"&gt;daqui&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Muito legal ;-)&lt;/p&gt;</description>
      <pubDate>Wed, 01 Sep 2010 14:26:00 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:2453dd96-54a1-4f0a-af03-8e44e518897f</guid>
      <author>André Ribeiro Camargo</author>
      <link>http://blog.boaideia.inf.br/articles/2010/09/01/actionmailer-do-rails-3</link>
      <category>trabalho</category>
      <category>nerd</category>
      <category>rails</category>
      <category>shoppings</category>
    </item>
    <item>
      <title>Rails 3 chegou</title>
      <description>&lt;p&gt;Momentos de grande excitação na comunidade Ruby On Rails, a versão 3.0 foi lançada ontem.&lt;/p&gt;


	&lt;p&gt;Já faz alguns dias que estou trabalhando com ele, a experiência está sendo muito boa.&lt;/p&gt;


	&lt;p&gt;No momento, continuo escrevendo testes de integração, já cobri cerca de 1/3 dos módulos da aplicação dos shoppings.&lt;/p&gt;


	&lt;p&gt;Vou continuar no edge, até mesmo porque não sei quando vou terminar de portar isso :-)&lt;/p&gt;</description>
      <pubDate>Mon, 30 Aug 2010 14:49:00 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:7db9d3e1-846b-403c-a3cd-b3e23029945d</guid>
      <author>André Ribeiro Camargo</author>
      <link>http://blog.boaideia.inf.br/articles/2010/08/30/rails-3-chegou</link>
      <category>nerd</category>
      <category>rails</category>
      <category>shoppings</category>
    </item>
    <item>
      <title>Diminuindo o tempo de instalação das Gems</title>
      <description>&lt;p&gt;Dica legal: &lt;a href="http://blog.stevensoroka.ca/2010/04/06/faster-ruby-gem-installs"&gt;Faster Ruby Gems installs&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Normalmente eu passava&amp;#8212;no-rdoc&amp;#8212;no-ri pela linha de comando mesmo.&lt;/p&gt;</description>
      <pubDate>Wed, 28 Jul 2010 08:31:00 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:2901ddc3-e63a-4304-8f93-97629301937a</guid>
      <author>André Ribeiro Camargo</author>
      <link>http://blog.boaideia.inf.br/articles/2010/07/28/diminuindo-o-tempo-de-instala%C3%A7%C3%A3o-das-gems</link>
      <category>trabalho</category>
      <category>nerd</category>
      <category>rails</category>
    </item>
    <item>
      <title>Acessando o Model da sessão para quem usa ActiveRecordStore</title>
      <description>&lt;p&gt;Esta é útil para quem armazena sessões no banco de dados.&lt;/p&gt;


	&lt;p&gt;Antigamente, para acessar o model bastava &amp;#8220;session.model&amp;#8221;, agora tem que ser através de &amp;#8220;request.env[&amp;#8216;rack.session.record&amp;#8217;]&amp;#8221;.&lt;/p&gt;


	&lt;p&gt;Fica a dica&amp;#8230;&lt;/p&gt;</description>
      <pubDate>Sun, 25 Jul 2010 17:52:00 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:c18c7806-e4ff-4e0e-898e-934924d72aba</guid>
      <author>André Ribeiro Camargo</author>
      <link>http://blog.boaideia.inf.br/articles/2010/07/25/acessando-o-model-da-sess%C3%A3o-para-quem-usa-activerecordstore</link>
      <category>trabalho</category>
      <category>rails</category>
    </item>
    <item>
      <title>O &amp;quot;problema&amp;quot; do parâmetro que contém pontos</title>
      <description>&lt;p&gt;Aventura continua, já tenho doze requisições passando no teste de integração do portal. Antes tinha &lt;span class="caps"&gt;ZERO&lt;/span&gt; testes, então, acho que estamos evoluindo rapidamente.&lt;/p&gt;


	&lt;p&gt;Mas, só passei para avisar aqueles que estão migrando do Rails 1.1.6, para &lt;span class="caps"&gt;QUALQUER&lt;/span&gt; versão superior, sobre o &amp;#8220;problema do parâmetro que contém pontos&amp;#8221;.&lt;/p&gt;


	&lt;p&gt;Exemplo:&lt;/p&gt;


	&lt;p&gt;Aplicação deve processar uma requisição cujo caminho possui pontos, tipo:&lt;/p&gt;


&lt;code&gt;/descadastrar/andre@boaideia.inf.br&lt;/code&gt;

	&lt;p&gt;A rota no Rails 1.1.6 seria:&lt;/p&gt;


&lt;code&gt;map.connect "descadastrar/:email", :controller =&amp;gt; "controlador", :action =&amp;gt; :acao&lt;/code&gt;

	&lt;p&gt;Para funcionar no Rails3, tem que fazer:&lt;/p&gt;


&lt;code&gt;match "descadastrar/:email" =&amp;gt; "controlador#acao", :constraints =&amp;gt; { :email =&amp;gt; /.*/ }&lt;/code&gt;

	&lt;p&gt;Daí vai funcionar beleza, o &amp;#8220;problema&amp;#8221; é que apartir da versão 2.0 o Rails utiliza os pontos para escolher o formato da resposta da requisição.&lt;/p&gt;


	&lt;p&gt;Ai ai, já fazia algumas horas que eu estava procurando entender o motivo pelo qual essa versão 3 me retornava &amp;#8220;No route matches&amp;#8221;. Coisa triste a ignorância.&lt;/p&gt;


	&lt;p&gt;PS: &lt;span class="caps"&gt;NESTE&lt;/span&gt; caso, como o parâmetro é um endereço de correio eletrônico, vocês podem até utilizar um regex mais apropriado do que este do exemplo.&lt;/p&gt;


	&lt;p&gt;Fui!&lt;/p&gt;</description>
      <pubDate>Fri, 23 Jul 2010 22:40:00 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:38779cd2-d5ea-4ab8-8a16-94942c24b4df</guid>
      <author>André Ribeiro Camargo</author>
      <link>http://blog.boaideia.inf.br/articles/2010/07/23/o-problema-do-par%C3%A2metro-que-cont%C3%A9m-pontos</link>
      <category>trabalho</category>
      <category>rails</category>
      <category>shoppings</category>
    </item>
    <item>
      <title>MySQL INSERT DELAYED</title>
      <description>&lt;p&gt;Uso MySQL na aplicação dos shoppings com storage InnoDB. Funciona muito bem.&lt;/p&gt;


	&lt;p&gt;Mas ultimamente notei um gargalo de performance no banco quando tenho alguns INSERTs concorrentes na tabela de acessos (tipo uns 9). &lt;span class="caps"&gt;SHOW PROCESSLIST&lt;/span&gt; no console do mysql não mostrava outra coisa que não fosse &lt;span class="caps"&gt;COMMIT&lt;/span&gt; na informação das threads. E as requisições acabam ultrapassando a minha meta de consumir, no máximo, 1 segundo.&lt;/p&gt;


	&lt;p&gt;Pesquisei um pouco a respeito de como otimizar isso e descobri o &lt;a href="http://dev.mysql.com/doc/refman/5.1/en/insert-delayed.html"&gt;&lt;span class="caps"&gt;INSERT DELAYED&lt;/span&gt;&lt;/a&gt;, vamos tentar&amp;#8230;&lt;/p&gt;


	&lt;p&gt;Primeiro mexi no banco, &lt;span class="caps"&gt;ALTER TABLE&lt;/span&gt; nome_da_tabela &lt;span class="caps"&gt;ENGINE&lt;/span&gt;=MYISAM; para converter a tabela de InnoDB para &lt;span class="caps"&gt;MYISAM&lt;/span&gt;.&lt;/p&gt;


	&lt;p&gt;Depois alterei a aplicação, copiando o método ActiveRecord::Base#create para meu model e  renomeando-o para create_without_callbacks (eu uso before_create para setar alguns atributos e queria manter os callbacks funcionando)&lt;/p&gt;


	&lt;p&gt;E para ver se funcionou, no console do MySQL rode &lt;a href="http://dev.mysql.com/doc/refman/5.1/en/show-status.html"&gt;&lt;span class="caps"&gt;SHOW STATUS LIKE&lt;/span&gt; &amp;#8216;&lt;span&gt;delay&lt;/span&gt;&amp;#8217;;&lt;/a&gt; e &lt;a href="http://dev.mysql.com/doc/refman/5.1/en/server-status-variables.html"&gt; leia aqui o significado de cada variável&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Estou ansioso para comparar os logs de produção :-)&lt;/p&gt;</description>
      <pubDate>Tue, 08 Jun 2010 07:30:00 -0300</pubDate>
      <guid isPermaLink="false">urn:uuid:dca8aa2d-7074-479e-a6ef-61ba29bfccbb</guid>
      <author>André Ribeiro Camargo</author>
      <link>http://blog.boaideia.inf.br/articles/2010/06/08/mysql-insert-delayed</link>
      <category>trabalho</category>
      <category>nerd</category>
      <category>pessoa jurídica</category>
      <category>rails</category>
      <category>shoppings</category>
    </item>
  </channel>
</rss>

