<?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: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-1453640782299760393</id><updated>2011-11-27T15:43:46.611-08:00</updated><title type='text'>Up Source</title><subtitle type='html'>SUA FONTE DO MUNDO PELA INTERNET ! ! !</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://upsource.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://upsource.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Up Source</name><uri>http://www.blogger.com/profile/15805589682459153149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='19' src='http://3.bp.blogspot.com/_nxp6wKOWXWY/S8kwiNGv-_I/AAAAAAAAACs/N5YBk7E4uOw/S220/up.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1453640782299760393.post-6746406692262744155</id><published>2010-04-16T20:54:00.000-07:00</published><updated>2010-04-16T20:57:52.654-07:00</updated><title type='text'>Up Source</title><content type='html'>A Criação de site é a melhor maneira de sua empresa estar na Internet e tornar-se cada vez mais conhecida. Nela, sua empresa estará exposta durante 24 horas por dia, 365 dias por ano. Seus clientes poderão ter acesso a todas as informações sobre seus produtos, serviços, lançamentos e condições de pagamento. &lt;br /&gt;&lt;br /&gt;O processo de desenvolvimento de sites é personalizado e diferenciado. Seu site será único, criado com um design moderno e atrativo, atendendo, diretamente, aos seus objetivos comerciais, temos excelentes profissionais de programação e Webdesigner.&lt;br /&gt;Fazemos a pesquisa de palavras chaves, tags para buscadores, customização do site, o registro do dominio do site, a configuração e a hospedagem de seu site. Também digitalizamos as suas imagens, textos e criamos ou adaptamos a sua logomarca para a criação do web site.&lt;br /&gt;&lt;br /&gt;Porque criar um Site: Up Source&lt;br /&gt;&lt;br /&gt;- Possibilidade de públicos antes nunca imaginado, resumindo, milhares de clientes em potencial pelo mundo inteiro; &lt;br /&gt;- A publicidade na internet é o meio de publicidade que mais cresce atualmente, além de publicidade direta serve como apoio para publicidade de outros meios de comunicacão. &lt;br /&gt;- O melhor custo/beneficio para divulgar sua empresa, serviço ou produto atualmente é a internet.&lt;br /&gt;- Hoje a internet no mundo todo tem mais de 1,5 bilhões de usuários, portanto sua empresa não pode deixar de estar na internet.&lt;br /&gt;- Sua empresa aberta 365 dias por ano, 24 horas por dia; &lt;br /&gt;Todos os nossos sites são com Gerenciador de Conteúdo, possiblitando o usuario editar o  seu site, ou seja, trocar fotos, e textos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Contrate nosa empresa em : http://www.upsource.com.br/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1453640782299760393-6746406692262744155?l=upsource.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://upsource.blogspot.com/feeds/6746406692262744155/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1453640782299760393&amp;postID=6746406692262744155&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/6746406692262744155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/6746406692262744155'/><link rel='alternate' type='text/html' href='http://upsource.blogspot.com/2010/04/up-source.html' title='Up Source'/><author><name>Up Source</name><uri>http://www.blogger.com/profile/15805589682459153149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='19' src='http://3.bp.blogspot.com/_nxp6wKOWXWY/S8kwiNGv-_I/AAAAAAAAACs/N5YBk7E4uOw/S220/up.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1453640782299760393.post-2833052604744673853</id><published>2010-03-10T13:21:00.000-08:00</published><updated>2010-03-10T13:22:32.841-08:00</updated><title type='text'>O que é Ruby ?</title><content type='html'>Ruby é uma linguagem de script criada em 1994 por Yukihiro Matsumoto (Matz). Ela foi grandemente inspirada em Python e Perl (daí o nome “Ruby”, outra pedra preciosa). Matz queria uma linguagem mais poderosa que Perl e mais orientada a objeto que Python.&lt;br /&gt;&lt;br /&gt;Ruby foi desenvolvida com o “princípio da menor surpresa” em mente. O objetivo era fazer uma linguagem expressiva que ajudasse o programador a fazer o que pensa ao invés de “entrar no caminho”.&lt;br /&gt;&lt;br /&gt;A linguagem é 100% orientado a objeto e dinamicamente tipada. Isto é, diferente de Java e C++, o tipo do objeto só é conhecido em runtime.&lt;br /&gt;&lt;br /&gt;Como linguagem orientada a objetos, ela implementa algumas funcionalidades muito interessantes, como:&lt;br /&gt;&lt;br /&gt;    * Mixins, para lidar com o problema de herança múltipla.&lt;br /&gt;    * Closures ou Blocos de Código, que permitem que código seja passado como parâmetro. Muito útil ao se lidar com coleções.&lt;br /&gt;    * Continuations, uma espécie de “save game” para código. Permite que vc interrompa o código em um ponto e continue sua execução em outro lugar.&lt;br /&gt;    * Bindings, que permite que o contexto (variáveis, objetos) seja passado para outro ponto do código. É utilizado no “eval” e no mecanismo de template do Ruby, o ERB.&lt;br /&gt;&lt;br /&gt;História do Ruby em dois parágrafos&lt;br /&gt;&lt;br /&gt;Matz começou a trabalhar no Ruby em 24 de fevereiro de 1993, a primeira versão alpha ficou pronta em dezembro de 1994. Até 1996, ele trabalhou sozinho, quando começou a se formar uma comunidade ao redor da linguagem. A partir daí, apesar de ainda fazer a maior parte do desenvolvimento sozinho, Matz passou a receber fixes e patches da comunidade.&lt;br /&gt;&lt;br /&gt;Em 2004, David Heinemeier Hansson e colaboradores criaram a “killer application” que está alavancando a linguagem para uma linguagem de primeiro nível: o RubyOnRails.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1453640782299760393-2833052604744673853?l=upsource.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://upsource.blogspot.com/feeds/2833052604744673853/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1453640782299760393&amp;postID=2833052604744673853&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/2833052604744673853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/2833052604744673853'/><link rel='alternate' type='text/html' href='http://upsource.blogspot.com/2010/03/o-que-e-ruby.html' title='O que é Ruby ?'/><author><name>Up Source</name><uri>http://www.blogger.com/profile/15805589682459153149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='19' src='http://3.bp.blogspot.com/_nxp6wKOWXWY/S8kwiNGv-_I/AAAAAAAAACs/N5YBk7E4uOw/S220/up.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1453640782299760393.post-6724616931342708054</id><published>2010-03-10T11:09:00.000-08:00</published><updated>2010-03-10T11:11:08.584-08:00</updated><title type='text'>Models</title><content type='html'>Models correspondem à camada de acesso ao banco de dados, implementada no&lt;br /&gt;Rails por um componente denominado ActiveRecord.&lt;br /&gt;&lt;br /&gt;O Rails automaticamente entende que todas as tabelas criadas no banco para uso&lt;br /&gt;em models satisfarão a duas condições: terão um nome plural em inglês e terão&lt;br /&gt;uma chave primária auto-incrementada chamada id. É possível mudar ambas as&lt;br /&gt;condições, mas inicialmente ficaremos com elas para não ter que modificar o que o&lt;br /&gt;Rails gera e usa automaticamente.&lt;br /&gt;&lt;br /&gt;Para gerar um modelo, utilizamos o seguinte comando:&lt;br /&gt;&lt;br /&gt;script/generate model categoria&lt;br /&gt;&lt;br /&gt;exists app/models/&lt;br /&gt;exists test/unit/&lt;br /&gt;exists test/fixtures/&lt;br /&gt;create app/models/categoria.rb&lt;br /&gt;create test/unit/categoria_test.rb&lt;br /&gt;create test/fixtures/categorias.yml&lt;br /&gt;create db/migrate&lt;br /&gt;create db/migrate/20081011091001_create_categorias.rb&lt;br /&gt;&lt;br /&gt;O comando acima gera toda estrutura de suporte ao modelo, incluindo testes e&lt;br /&gt;migrações para o mesmo (abordaremos estes assuntos adiante neste livro).&lt;br /&gt;O arquivo responsável pela implementação do modelo está em app/model/&lt;br /&gt;categoria.rb e contém apenas o seguinte:&lt;br /&gt;&lt;br /&gt;class Categoria &lt; ActiveRecord::Base&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;Essas duas linhas, apoiadas pelo Rails, já providenciam uma riqueza de&lt;br /&gt;implementação que nos permite recuperar, inserir e atualizar dados no banco, e&lt;br /&gt;executar uma série de outras operações complexas sem a necessidade de qualquer&lt;br /&gt;comando SQL direto.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1453640782299760393-6724616931342708054?l=upsource.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://upsource.blogspot.com/feeds/6724616931342708054/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1453640782299760393&amp;postID=6724616931342708054&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/6724616931342708054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/6724616931342708054'/><link rel='alternate' type='text/html' href='http://upsource.blogspot.com/2010/03/models.html' title='Models'/><author><name>Up Source</name><uri>http://www.blogger.com/profile/15805589682459153149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='19' src='http://3.bp.blogspot.com/_nxp6wKOWXWY/S8kwiNGv-_I/AAAAAAAAACs/N5YBk7E4uOw/S220/up.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1453640782299760393.post-7754755813112096558</id><published>2010-03-10T11:00:00.000-08:00</published><updated>2010-03-10T11:09:21.891-08:00</updated><title type='text'>INCREMENTANDO AS VIEWS COM USO DE LAYOUTS</title><content type='html'>Para facilitar o desenvolvimento da parte visual de uma aplicação, o Rails possui um&lt;br /&gt;conceito denominado layouts.&lt;br /&gt;&lt;br /&gt;Na maioria das aplicações Web, as páginas variam somente no seu conteúdo&lt;br /&gt;principal, possuindo cabeçalhos, rodapés e barras de navegação em comum.&lt;br /&gt;Obviamente, um framework cujo maior objetivo é aumentar a produtividade do&lt;br /&gt;desenvolvedor não exigiria que o código para esses elementos tivesse que ser&lt;br /&gt;repetido em cada view. Um layout funciona como um arquivo raiz, dentro do qual o&lt;br /&gt;resultado de uma view é inserido automaticamente.&lt;br /&gt;&lt;br /&gt;Mais uma vez favorecendo convenção ao invés de configuração, o Rails define um&lt;br /&gt;arquivo padrão de layout que é usado automaticamente por qualquer view a não ser&lt;br /&gt;que haja especificação em contrário. O Rails também é inteligente o bastante para&lt;br /&gt;somente usar um layout em views com a mesma extensão.&lt;br /&gt;&lt;br /&gt;O layout padrão para a aplicação fica em um arquivo chamado application.html.erb,&lt;br /&gt;dentro do diretório app/views/layouts.&lt;br /&gt;&lt;br /&gt;Se olharmos agora o código gerado pela página que criamos no nosso primeiro&lt;br /&gt;exemplo de Controller e View, teremos o seguinte:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_nxp6wKOWXWY/S5fsrHqzcrI/AAAAAAAAABk/6FKcGet8Lt0/s1600-h/D__Documents+and+Settings_Administrador_Configuraes+locais_Dados+de+aplicativos_Mozilla_Firefox_Profiles_1cf41i2p.bmp"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 271px;" src="http://1.bp.blogspot.com/_nxp6wKOWXWY/S5fsrHqzcrI/AAAAAAAAABk/6FKcGet8Lt0/s400/D__Documents+and+Settings_Administrador_Configuraes+locais_Dados+de+aplicativos_Mozilla_Firefox_Profiles_1cf41i2p.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5447082499865014962" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Como você pode notar, não estamos gerando nenhum dos elementos HTML&lt;br /&gt;geralmente vistos em uma página comum.&lt;br /&gt;&lt;br /&gt;Vamos criar o arquivo application.html.erb no diretório especificado, com o&lt;br /&gt;seguinte conteúdo:&lt;br /&gt;&lt;br /&gt;&lt;html&gt;&lt;br /&gt;&lt;head&gt;&lt;br /&gt;&lt;title&gt;Central Eventos&lt;/title&gt;&lt;br /&gt;&lt;/head&gt;&lt;br /&gt;&lt;body&gt;&lt;br /&gt;&lt;div id=”principal”&gt;&lt;br /&gt;&lt;%= yield %&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/body&gt;&lt;br /&gt;&lt;/html&gt;&lt;br /&gt;&lt;br /&gt;Temos no arquivo acima, o primeiro exemplo de uso de código Ruby dentro de&lt;br /&gt;uma view, delimitado pelos marcadores &lt;% e %&gt;. Aqueles familiarizados com PHP e&lt;br /&gt;ASP reconhecerão o estilo de marcadores, com o uso de &lt;%= objeto %&gt; para&lt;br /&gt;retornar conteúdo.&lt;br /&gt;&lt;br /&gt;No caso acima, o método especial yield retorna o conteúdo atual gerado pela ação,&lt;br /&gt;seja por meio de uma view ou usando render diretamente. O método yield tem&lt;br /&gt;uma conotação especial no Ruby, servindo para invocar o bloco associado ao&lt;br /&gt;contexto. Inserido em um layout do Rails, o bloco define a execução da ação, com&lt;br /&gt;seu conseqüente retorno de conteúdo.&lt;br /&gt;&lt;br /&gt;A nossa página recarregada agora fica como mostrado abaixo:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_nxp6wKOWXWY/S5ftDZqMXpI/AAAAAAAAABs/qsK8HXB9yiU/s1600-h/D__Documents+and+Settings_Administrador_Configuraes+locais_Dados+de+aplicativos_Mozilla_Firefox_Profiles_1cf41i2p.bmp"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 231px;" src="http://3.bp.blogspot.com/_nxp6wKOWXWY/S5ftDZqMXpI/AAAAAAAAABs/qsK8HXB9yiU/s400/D__Documents+and+Settings_Administrador_Configuraes+locais_Dados+de+aplicativos_Mozilla_Firefox_Profiles_1cf41i2p.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5447082917011152530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Não parece muita coisa, mas, olhando o código, você verá o seguinte:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_nxp6wKOWXWY/S5ftd8KmWvI/AAAAAAAAAB0/R9gJKln3eks/s1600-h/D__Documents+and+Settings_Administrador_Configuraes+locais_Dados+de+aplicativos_Mozilla_Firefox_Profiles_1cf41i2p.bmp"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 269px;" src="http://3.bp.blogspot.com/_nxp6wKOWXWY/S5ftd8KmWvI/AAAAAAAAAB0/R9gJKln3eks/s400/D__Documents+and+Settings_Administrador_Configuraes+locais_Dados+de+aplicativos_Mozilla_Firefox_Profiles_1cf41i2p.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5447083372950477554" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;O que precisamos fazer agora é extender o nosso layout. O nosso arquivo&lt;br /&gt;application.html.erb poderia ser mudado para o seguinte:&lt;br /&gt;&lt;br /&gt;&lt;html&gt;&lt;br /&gt;&lt;head&gt;&lt;br /&gt;&lt;title&gt;Central de Eventos&lt;/title&gt;&lt;br /&gt;&lt;%= stylesheet_link_tag "default" %&gt;&lt;br /&gt;&lt;/head&gt;&lt;br /&gt;&lt;br /&gt;&lt;body&gt;&lt;br /&gt;&lt;div id=”principal”&gt;&lt;br /&gt;&lt;%= yield %&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/body&gt;&lt;br /&gt;&lt;br /&gt;&lt;/html&gt;&lt;br /&gt;&lt;br /&gt;O método stylesheet_link_tag recebe o nome de uma stylesheet como parâmetro e&lt;br /&gt;gera um link para a mesma. O nosso código gerado agora ficou assim:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_nxp6wKOWXWY/S5ft3jGQMKI/AAAAAAAAAB8/kwBe0tZJqJU/s1600-h/D__Documents+and+Settings_Administrador_Configuraes+locais_Dados+de+aplicativos_Mozilla_Firefox_Profiles_1cf41i2p.bmp"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 166px;" src="http://4.bp.blogspot.com/_nxp6wKOWXWY/S5ft3jGQMKI/AAAAAAAAAB8/kwBe0tZJqJU/s400/D__Documents+and+Settings_Administrador_Configuraes+locais_Dados+de+aplicativos_Mozilla_Firefox_Profiles_1cf41i2p.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5447083812897960098" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note que mais uma vez o Rails assumiu um caminho padrão. Nesse caso, o arquivo&lt;br /&gt;é servido diretamente da raiz da aplicação, que é o diretório public. Você pode criar&lt;br /&gt;um arquivo chamado default.css no diretório public/stylesheets para adicioná-lo à&lt;br /&gt;aplicação.&lt;br /&gt;&lt;br /&gt;Um exemplo disso seria:&lt;br /&gt;&lt;br /&gt;body{&lt;br /&gt;background-color:#763A3A;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;h1{&lt;br /&gt;font-family:Verdana, Arial, Helvetica, sans-serif;&lt;br /&gt;font-variant:small-caps;&lt;br /&gt;font-size:30px;&lt;br /&gt;margin:0px;&lt;br /&gt;color:#572B2B;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;h2{&lt;br /&gt;font-family:Arial, Helvetica, sans-serif;&lt;br /&gt;font-size:25px;&lt;br /&gt;margin:0px;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;p{&lt;br /&gt;font-family:Arial, Helvetica, sans-serif;&lt;br /&gt;font-size:12px;&lt;br /&gt;color:#333333;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#principal{&lt;br /&gt;width:760px;&lt;br /&gt;height:600px;&lt;br /&gt;border:solid 2px #000000;&lt;br /&gt;background-color:#FFFFFF;&lt;br /&gt;margin:20px auto 0px auto;&lt;br /&gt;padding:15px;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Uma coisa a manter em mente é que o layout padrão da aplicação não é, de forma&lt;br /&gt;alguma, o único que pode ser gerado. Você pode criar tantos layouts quanto&lt;br /&gt;precisar, colocando-os no mesmo diretório, de onde estarão acessíveis a toda&lt;br /&gt;aplicação.&lt;br /&gt;&lt;br /&gt;Para usar um layout diferente em um controler você poderia fazer algo assim:&lt;br /&gt;&lt;br /&gt;class EventosController &lt; ApplicationController&lt;br /&gt;&lt;br /&gt;layout "home"&lt;br /&gt;&lt;br /&gt;def index&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;O layout cujo nome é home seria especificado no arquivo app/views/layouts/&lt;br /&gt;home.html.erb, com a mesma funcionalidade do arquivo application.html.erb.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1453640782299760393-7754755813112096558?l=upsource.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://upsource.blogspot.com/feeds/7754755813112096558/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1453640782299760393&amp;postID=7754755813112096558&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/7754755813112096558'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/7754755813112096558'/><link rel='alternate' type='text/html' href='http://upsource.blogspot.com/2010/03/incrementando-as-views-com-uso-de.html' title='INCREMENTANDO AS VIEWS COM USO DE LAYOUTS'/><author><name>Up Source</name><uri>http://www.blogger.com/profile/15805589682459153149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='19' src='http://3.bp.blogspot.com/_nxp6wKOWXWY/S8kwiNGv-_I/AAAAAAAAACs/N5YBk7E4uOw/S220/up.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_nxp6wKOWXWY/S5fsrHqzcrI/AAAAAAAAABk/6FKcGet8Lt0/s72-c/D__Documents+and+Settings_Administrador_Configuraes+locais_Dados+de+aplicativos_Mozilla_Firefox_Profiles_1cf41i2p.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1453640782299760393.post-1244380246102779057</id><published>2010-03-10T10:57:00.000-08:00</published><updated>2010-03-10T11:00:39.311-08:00</updated><title type='text'>A PRIMEIRA VIEW</title><content type='html'>Vamos criar a nossa primeira view. O rails é automaticamente configurado para&lt;br /&gt;procurar pela view com o mesmo nome da ação. Nossa ação se chama index,&lt;br /&gt;portanto precisamos criar uma view com o mesmo nome “index”. As views são&lt;br /&gt;salvas numa pasta com o mesmo nome do controller, portanto no nosso caso&lt;br /&gt;criamos o arquivo app/views/eventos/index.html.erb&lt;br /&gt;&lt;br /&gt;As extensões colocadas em sequencia .html.erb indicam que esse é um arquivo&lt;br /&gt;HTML com código Ruby embutido (Embed RuBy - .erb).&lt;br /&gt;&lt;br /&gt;Vamos criar o seguinte arquivo, então:&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Olá, mundo!&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Agora, recarregando a página, temos:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_nxp6wKOWXWY/S5fsGg_3i5I/AAAAAAAAABc/70JiaP1QlYI/s1600-h/D__Documents+and+Settings_Administrador_Configuraes+locais_Dados+de+aplicativos_Mozilla_Firefox_Profiles_1cf41i2p.bmp"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 234px;" src="http://3.bp.blogspot.com/_nxp6wKOWXWY/S5fsGg_3i5I/AAAAAAAAABc/70JiaP1QlYI/s400/D__Documents+and+Settings_Administrador_Configuraes+locais_Dados+de+aplicativos_Mozilla_Firefox_Profiles_1cf41i2p.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5447081871009090450" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sem que haja necessidade de especificar qualquer coisa, o Rails está usando o&lt;br /&gt;arquivo adequado. Veja que não configuramos qualquer coisa. Criamos um controller,&lt;br /&gt;definimos um método no mesmo, e criamos um arquivo que contém o que&lt;br /&gt;queremos que seja retornado por aquele método. A simples existência desses&lt;br /&gt;arquivos representa uma cadeia de execução sem que precisamos nos preocupar&lt;br /&gt;com que parte da aplicação faz isso ou aquilo.&lt;br /&gt;Qualquer outra ação que fosse criada dentro desse controller seguiria o mesmo&lt;br /&gt;padrão. O nome da ação seria associado a um nome de arquivo dentro de um&lt;br /&gt;diretório em app/views cujo nome seria o do próprio controller. O Rails também é&lt;br /&gt;inteligente ao ponto de responder a uma ação mesmo que o método não exista,&lt;br /&gt;desde que a view esteja presente no diretório correto.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1453640782299760393-1244380246102779057?l=upsource.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://upsource.blogspot.com/feeds/1244380246102779057/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1453640782299760393&amp;postID=1244380246102779057&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/1244380246102779057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/1244380246102779057'/><link rel='alternate' type='text/html' href='http://upsource.blogspot.com/2010/03/primeira-view.html' title='A PRIMEIRA VIEW'/><author><name>Up Source</name><uri>http://www.blogger.com/profile/15805589682459153149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='19' src='http://3.bp.blogspot.com/_nxp6wKOWXWY/S8kwiNGv-_I/AAAAAAAAACs/N5YBk7E4uOw/S220/up.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_nxp6wKOWXWY/S5fsGg_3i5I/AAAAAAAAABc/70JiaP1QlYI/s72-c/D__Documents+and+Settings_Administrador_Configuraes+locais_Dados+de+aplicativos_Mozilla_Firefox_Profiles_1cf41i2p.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1453640782299760393.post-340109610369957302</id><published>2010-03-10T10:51:00.000-08:00</published><updated>2010-03-10T10:57:16.181-08:00</updated><title type='text'>O Primeiro Controller</title><content type='html'>Vamos começar criando um controller para lidar com a página inicial de nossa&lt;br /&gt;aplicação. Para gerar um controller, usamos o comando abaixo:&lt;br /&gt;&lt;br /&gt;script/generate controller eventos&lt;br /&gt;&lt;br /&gt;exists app/controllers/&lt;br /&gt;exists app/helpers/&lt;br /&gt;create app/views/eventos&lt;br /&gt;exists test/functional/&lt;br /&gt;create app/controllers/eventos_controller.rb&lt;br /&gt;create test/functional/eventos_controller_test.rb&lt;br /&gt;create app/helpers/eventos_helper.rb&lt;br /&gt;&lt;br /&gt;Utilizaremos muito o comando generate, que gera documentos automaticamente.&lt;br /&gt;O nome passado para o comando é eventos, que será usado para compor todos os&lt;br /&gt;arquivos gerados pelo mesmo.&lt;br /&gt;&lt;br /&gt;Se você acessar a URL desse controller agora, você vai receber a seguinte tela:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_nxp6wKOWXWY/S5fqdrXvgiI/AAAAAAAAABM/4GBK4HFIAio/s1600-h/D__Documents+and+Settings_Administrador_Configuraes+locais_Dados+de+aplicativos_Mozilla_Firefox_Profiles_1cf41i2p.bmp"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 195px;" src="http://3.bp.blogspot.com/_nxp6wKOWXWY/S5fqdrXvgiI/AAAAAAAAABM/4GBK4HFIAio/s400/D__Documents+and+Settings_Administrador_Configuraes+locais_Dados+de+aplicativos_Mozilla_Firefox_Profiles_1cf41i2p.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5447080069907317282" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Repare que, nesse caso, eu informei somente /controller/ como a URL, sem passar&lt;br /&gt;nem a parte correspondente a uma ação ou a um id. Nesse caso, o Rails assume que&lt;br /&gt;estamos invocando a ação index sem id. Esse é um mais exemplo de convenção ao&lt;br /&gt;invés de configuração. Ao invés de ter sempre que especificar uma ação padrão em&lt;br /&gt;algum lugar, o Rails convenciona que a ação padrão é index, poupando o&lt;br /&gt;desenvolvedor sem afetar a aplicação.&lt;br /&gt;&lt;br /&gt;Vamos olhar o arquivo app/controllers/eventos_controller.rb gerado por nosso&lt;br /&gt;comando. Como já mencionamos, o Rails segue uma estrutura fixa de diretórios,&lt;br /&gt;poupando mais uma vez o desenvolvedor. Arquivos relacionados ao banco vão em&lt;br /&gt;no diretório db, arquivos de configuração em config e tudo relacionado a MVC vai&lt;br /&gt;em app. Dentro de app temos vários outros diretórios que contém mais partes&lt;br /&gt;específicas da aplicação. Em alguns casos, o Rails também adiciona um sufixo ao&lt;br /&gt;arquivo, evitando colisões de nomes e problemas estranhos na aplicação, como é o&lt;br /&gt;caso aqui. O arquivo do controller criado contém o seguinte:&lt;br /&gt;&lt;br /&gt;class EventosController &lt; ApplicationController&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;A classe EventosController define quem que irá responder a requisições padrão&lt;br /&gt;em /home. Ela herda da classe ApplicationController, que está definida no arquivo&lt;br /&gt;application.rb, no mesmo diretório. Sendo assim, qualquer método criado na classe&lt;br /&gt;ApplicationController estará automaticamente disponível nos controllers gerados&lt;br /&gt;para a aplicação.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para criarmos a ação index, basta adicionarmos um método à classe:&lt;br /&gt;&lt;br /&gt;class EventosController &lt; ApplicationController&lt;br /&gt;&lt;br /&gt;def index&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;O princípio que usamos acima é comum a tudo em Rails. Basicamente tudo o que&lt;br /&gt;fazemos em uma aplicação usando o mesmo consiste em extender alguma classe&lt;br /&gt;por meio da adição de métodos customizados.&lt;br /&gt;&lt;br /&gt;Recarregando a página no navegador, ficamos com o seguinte:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_nxp6wKOWXWY/S5frWTQEONI/AAAAAAAAABU/5Ayk43aFTZ0/s1600-h/D__Documents+and+Settings_Administrador_Configuraes+locais_Dados+de+aplicativos_Mozilla_Firefox_Profiles_1cf41i2p.bmp"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 188px;" src="http://3.bp.blogspot.com/_nxp6wKOWXWY/S5frWTQEONI/AAAAAAAAABU/5Ayk43aFTZ0/s400/D__Documents+and+Settings_Administrador_Configuraes+locais_Dados+de+aplicativos_Mozilla_Firefox_Profiles_1cf41i2p.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5447081042685212882" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Vamos que, dessa vez, o Rails identificou a ação a ser executada, mas, como a&lt;br /&gt;aplicação não especificou nenhum retorno, houve um erro. Isso aconteceu porque o&lt;br /&gt;Rails tentou aplicar automaticamente uma view para aquela ação do controller. Como&lt;br /&gt;a view ainda não existe, temos o erro.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1453640782299760393-340109610369957302?l=upsource.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://upsource.blogspot.com/feeds/340109610369957302/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1453640782299760393&amp;postID=340109610369957302&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/340109610369957302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/340109610369957302'/><link rel='alternate' type='text/html' href='http://upsource.blogspot.com/2010/03/o-primeiro-controller.html' title='O Primeiro Controller'/><author><name>Up Source</name><uri>http://www.blogger.com/profile/15805589682459153149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='19' src='http://3.bp.blogspot.com/_nxp6wKOWXWY/S8kwiNGv-_I/AAAAAAAAACs/N5YBk7E4uOw/S220/up.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_nxp6wKOWXWY/S5fqdrXvgiI/AAAAAAAAABM/4GBK4HFIAio/s72-c/D__Documents+and+Settings_Administrador_Configuraes+locais_Dados+de+aplicativos_Mozilla_Firefox_Profiles_1cf41i2p.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1453640782299760393.post-1642230976414653207</id><published>2010-03-10T10:50:00.000-08:00</published><updated>2010-03-10T10:51:25.355-08:00</updated><title type='text'>MVC – Models, Views e Controllers</title><content type='html'>O Rails utiliza uma estratégia de desenvolvimento chamada de MVC (Model-View-&lt;br /&gt;Controller). Essa estratégia separa os componentes da aplicação em 3 partes&lt;br /&gt;distintas:&lt;br /&gt;Model&lt;br /&gt;&lt;br /&gt;O Model é a parte da aplicação que faz ligação como o banco de dados.&lt;br /&gt;Tecnicamente, o model é implementado pela classe ActiveRecord.&lt;br /&gt;&lt;br /&gt;View&lt;br /&gt;&lt;br /&gt;O View é a interface com o usuário – um sistema de template que gera&lt;br /&gt;documentos HTML (entre outros) que são enviados para o usuário. As classes&lt;br /&gt;conhecidas como ActionPack, implementam o View e também o Controller.&lt;br /&gt;&lt;br /&gt;Controller&lt;br /&gt;&lt;br /&gt;Um controller é uma classe responsável por receber as requisições feitas pela&lt;br /&gt;aplicação e executar as ações necessárias para atender essas requisições. É no&lt;br /&gt;controller que definimos a lógica do funcionamento da nossa aplicação.&lt;br /&gt;O controller é quem será efetivamente solicitado pelo navegador. Quando&lt;br /&gt;necessário, o controller utiliza um Model previamente definido para acessar o&lt;br /&gt;banco de dados e, finalmente, encaminha um arquivo de visualização (uma View)&lt;br /&gt;para o usuário.&lt;br /&gt;&lt;br /&gt;Apesar de parecer complicado e trabalhoso demais à primeira vista, este modo de&lt;br /&gt;trabalhar traz uma série de vantagens em relação ao modelo tradicional de&lt;br /&gt;desenvolvimento em que uma única página mistura códigos responsáveis pelo seu&lt;br /&gt;funcionamento, pelo acesso ao banco de dados e por exibir dados ao usuário.&lt;br /&gt;Algumas vantagens são:&lt;br /&gt;&lt;br /&gt;• A manutenção fica mais fácil por haver uma clara distinção entre as partes da&lt;br /&gt;aplicação&lt;br /&gt;&lt;br /&gt;• É possível manter um controle centralizado de todo o site num único (ou em&lt;br /&gt;poucos) arquivo, ao invés de espalhado em dezenas deles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1453640782299760393-1642230976414653207?l=upsource.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://upsource.blogspot.com/feeds/1642230976414653207/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1453640782299760393&amp;postID=1642230976414653207&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/1642230976414653207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/1642230976414653207'/><link rel='alternate' type='text/html' href='http://upsource.blogspot.com/2010/03/mvc-models-views-e-controllers.html' title='MVC – Models, Views e Controllers'/><author><name>Up Source</name><uri>http://www.blogger.com/profile/15805589682459153149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='19' src='http://3.bp.blogspot.com/_nxp6wKOWXWY/S8kwiNGv-_I/AAAAAAAAACs/N5YBk7E4uOw/S220/up.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1453640782299760393.post-7239194501212511364</id><published>2010-03-10T10:44:00.000-08:00</published><updated>2010-03-10T10:50:31.441-08:00</updated><title type='text'>Condigurando o Banco de Dados</title><content type='html'>Vamos agora configurar o banco de dados da aplicação. Esse primeiro passo é muito&lt;br /&gt;importante porque o Rails usa as informações proveniente do schema do banco de&lt;br /&gt;dados para gerar automaticamente arquivos e configurações adicionais. Esse é mais&lt;br /&gt;um exemplo de convenção ao invés de configuração. Dessa forma, garantir que o&lt;br /&gt;banco está funcionando corretamente, configurado para uso da aplicação, é o passo&lt;br /&gt;inicial de qualquer desenvolvimento em Rails.&lt;br /&gt;O arquivo de configuração de banco de dados se chamada database.yml e está&lt;br /&gt;localizado no diretório config, junto com os demais arquivos de configuração da&lt;br /&gt;aplicação.&lt;br /&gt;&lt;br /&gt;Abrindo o arquivo database.yml, repare que uma aplicação Rails geralmente utiliza&lt;br /&gt;três bancos de dados, um para cada ambiente de desenvolvimento padrão. Repare&lt;br /&gt;também que por padrão o arquivo já vem previamente configurado para o banco de&lt;br /&gt;dados SQLite. Na nossa aplicação utilizaremos o banco MySQL, portanto nossa&lt;br /&gt;configuração ficará assim:&lt;br /&gt;&lt;br /&gt;Dica de Ruby - Arquivos YAML (*.yml)&lt;br /&gt;Um arquivo do tipo YAML é um arquivo de dados como o XML, por&lt;br /&gt;exemplo, mas com uma sintaxe mais limpa e enxuta. Um documento&lt;br /&gt;YAML é bastante útil para guardar arquivos de configuração.&lt;br /&gt;&lt;br /&gt;development:&lt;br /&gt; adapter: mysql&lt;br /&gt; encoding: utf8&lt;br /&gt; database: eventos_development&lt;br /&gt; pool: 5&lt;br /&gt; username: root&lt;br /&gt; password:&lt;br /&gt; host: localhost&lt;br /&gt;&lt;br /&gt;test:&lt;br /&gt; adapter: mysql&lt;br /&gt; encoding: utf8&lt;br /&gt; database: eventos_test&lt;br /&gt; pool: 5&lt;br /&gt; username: root&lt;br /&gt; password:&lt;br /&gt; host: localhost&lt;br /&gt;&lt;br /&gt;production:&lt;br /&gt; adapter: mysql&lt;br /&gt; encoding: utf8&lt;br /&gt; database: eventos_production&lt;br /&gt;  pool: 5&lt;br /&gt; username: root&lt;br /&gt; password:&lt;br /&gt; host: localhost&lt;br /&gt;&lt;br /&gt;Um banco de dados é utilizado para o desenvolvimento, onde todas as mudanças&lt;br /&gt;são aplicadas. Esse banco tem seu correspondente em um banco de produção, onde&lt;br /&gt;modificações somente são aplicadas uma vez que estejam completas. O arquivo&lt;br /&gt;permite configurar, inclusive, um banco remoto para onde suas modificações finais&lt;br /&gt;serão redirecionadas—embora geralmente seja melhor utilizar um outro método&lt;br /&gt;de implantação, como veremos mais adiante.&lt;br /&gt;&lt;br /&gt;O terceiro banco mostrado acima é um banco de testes, utilizado pelo Rails para a&lt;br /&gt;execução de unit testing. Esse banco deve ser mantido necessariamente à parte já&lt;br /&gt;que todos os dados e tabelas presentes no mesmo são excluídos e recriados a cada&lt;br /&gt;teste completo efetuado na aplicação.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Voltando à nossa aplicação, como um arquivo de configuração importante foi&lt;br /&gt;mudado, o servidor Web precisa ser reiniciado. Isso acontece porque ele somente&lt;br /&gt;lê essas configurações no início de execução. Esse é um dos raros casos em que um&lt;br /&gt;servidor de desenvolvimento precisa ser reiniciado já que o Rails recarrega&lt;br /&gt;praticamente qualquer modificação feita na aplicação quando está no modo de&lt;br /&gt;desenvolvimento.&lt;br /&gt;&lt;br /&gt;Agora temos uma aplicação e um banco de dados configurado. Com isso já&lt;br /&gt;podemos iniciar o processo de desenvolvimento propriamente dito.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1453640782299760393-7239194501212511364?l=upsource.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://upsource.blogspot.com/feeds/7239194501212511364/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1453640782299760393&amp;postID=7239194501212511364&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/7239194501212511364'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/7239194501212511364'/><link rel='alternate' type='text/html' href='http://upsource.blogspot.com/2010/03/condigurando-o-banco-de-dados.html' title='Condigurando o Banco de Dados'/><author><name>Up Source</name><uri>http://www.blogger.com/profile/15805589682459153149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='19' src='http://3.bp.blogspot.com/_nxp6wKOWXWY/S8kwiNGv-_I/AAAAAAAAACs/N5YBk7E4uOw/S220/up.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1453640782299760393.post-6460022713764843797</id><published>2010-03-10T10:40:00.000-08:00</published><updated>2010-03-10T10:44:56.742-08:00</updated><title type='text'>Iniciando em Rails</title><content type='html'>DESENVOLVENDO UMA APLICAÇÃO COMPLETA&lt;br /&gt;&lt;br /&gt;Para exemplificar os conceitos abordados neste material, vamos desenvolver uma&lt;br /&gt;aplicação completa de agendamento de eventos. Esta aplicação listará uma série de&lt;br /&gt;eventos como cursos, encontros e seminários com suas respectivas descrições e&lt;br /&gt;datas, e permitirá que se faça a gestão destas informações com o cadastramento,&lt;br /&gt;edição e exclusão de eventos.&lt;br /&gt;A primeira coisa a fazer, então, é criar o diretório de trabalho da aplicação. Isso é&lt;br /&gt;feito digitando o comando abaixo no console (ou no prompt de comando, no&lt;br /&gt;windows):&lt;br /&gt;rails eventos&lt;br /&gt;O comando rails gera o esqueleto completo de uma aplicação, pronta para rodar.&lt;br /&gt;Esse comando foi criado em seu sistema quando você instalou as bibliotecas&lt;br /&gt;necessárias.&lt;br /&gt;Após a digitação você verá o resultado do processo de criação, conforme&lt;br /&gt;demonstrado abaixo:&lt;br /&gt;create&lt;br /&gt;create app/controllers&lt;br /&gt;create app/helpers&lt;br /&gt;create app/models&lt;br /&gt;create app/views/layouts&lt;br /&gt;create config/environments&lt;br /&gt;create components&lt;br /&gt;create db&lt;br /&gt;create doc&lt;br /&gt;create lib&lt;br /&gt;create lib/tasks&lt;br /&gt;&lt;br /&gt;No esqueleto gerado, cada parte da aplicação tem um local específico para ser&lt;br /&gt;colocado. Isso deriva de uma das filosofias por trás do Rails que pode ser descrita&lt;br /&gt;pela frase “convenção ao invés de configuração”. Convenção, nesse caso, significa&lt;br /&gt;que há um acordo entre o framework e você, o desenvolvedor, de modo que você&lt;br /&gt;não precisa de preocupar com certos detalhes que, de outra forma, teriam que se&lt;br /&gt;descritos em um arquivo de configuração.&lt;br /&gt;Não vamos entrar em detalhes sobre a estrutura de diretórios agora porque ela&lt;br /&gt;ficará evidente à medida que avançarmos no livro. Não se preocupe: ela é bem&lt;br /&gt;lógica e, na maior parte do tempo, automaticamente gerenciada pelo Rails.&lt;br /&gt;Agora que temos uma aplicação básica, vamos rodá-la e ver o resultado.&lt;br /&gt;Para facilitar a vida, o Rails vem com seu próprio servidor Web, utilizando as&lt;br /&gt;bibliotecas do próprio Ruby. Para rodar o servidor, basta usar um dos scripts&lt;br /&gt;utilitários presentes em cada aplicação gerada pelo Rails (veja o diretório script sob&lt;br /&gt;o esqueleto da aplicação).&lt;br /&gt;Entre no diretório recém-criado e digite:&lt;br /&gt;script/server start&lt;br /&gt;=&gt; Booting Mongrel (use 'script/server webrick' to force&lt;br /&gt;WEBrick)&lt;br /&gt;=&gt; Rails application starting on http://0.0.0.0:3000&lt;br /&gt;=&gt; Call with -d to detach&lt;br /&gt;=&gt; Ctrl-C to shutdown server&lt;br /&gt;** Starting Mongrel listening at :3000&lt;br /&gt;** Starting Rails with development environment...&lt;br /&gt;** Rails loaded.&lt;br /&gt;** Loading any Rails specific GemPlugins&lt;br /&gt;** Signals ready. TERM =&gt; stop. USR2 =&gt; restart. INT =&gt; stop&lt;br /&gt;** Rails signals registered. HUP =&gt; reload (without restart).&lt;br /&gt;** Mongrel available at 0.0.0.0:3000&lt;br /&gt;** Use CTRL-C to stop.&lt;br /&gt;&lt;br /&gt;Como você poder ver, o comando inicia uma instância do servidor Mongrel, capaz&lt;br /&gt;de servir aplicações Rails sem necessidade de qualquer configuração adicional. O&lt;br /&gt;servidor roda localmente e recebe requisições na porta 3000.&lt;br /&gt;Lembre-se que em ambiente Windows, você deve digitar&lt;br /&gt;“ruby script/server start”.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_nxp6wKOWXWY/S5foLYLLc5I/AAAAAAAAABE/6ptsTrRVOxs/s1600-h/D__Documents+and+Settings_Administrador_Configuraes+locais_Dados+de+aplicativos_Mozilla_Firefox_Profiles_1cf41i2p.bmp"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 337px;" src="http://2.bp.blogspot.com/_nxp6wKOWXWY/S5foLYLLc5I/AAAAAAAAABE/6ptsTrRVOxs/s400/D__Documents+and+Settings_Administrador_Configuraes+locais_Dados+de+aplicativos_Mozilla_Firefox_Profiles_1cf41i2p.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5447077556493448082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Como mostrado acima, temos uma aplicação inicial rodando que, inclusive, mostra&lt;br /&gt;quais são os próximos passos para continuar o desenvolvimento da mesma.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1453640782299760393-6460022713764843797?l=upsource.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://upsource.blogspot.com/feeds/6460022713764843797/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1453640782299760393&amp;postID=6460022713764843797&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/6460022713764843797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/6460022713764843797'/><link rel='alternate' type='text/html' href='http://upsource.blogspot.com/2010/03/iniciando-em-rails.html' title='Iniciando em Rails'/><author><name>Up Source</name><uri>http://www.blogger.com/profile/15805589682459153149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='19' src='http://3.bp.blogspot.com/_nxp6wKOWXWY/S8kwiNGv-_I/AAAAAAAAACs/N5YBk7E4uOw/S220/up.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_nxp6wKOWXWY/S5foLYLLc5I/AAAAAAAAABE/6ptsTrRVOxs/s72-c/D__Documents+and+Settings_Administrador_Configuraes+locais_Dados+de+aplicativos_Mozilla_Firefox_Profiles_1cf41i2p.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1453640782299760393.post-8272462809276211903</id><published>2010-03-10T10:39:00.000-08:00</published><updated>2010-03-10T10:40:27.842-08:00</updated><title type='text'>Instalação em Linux</title><content type='html'>Em distribuições do Linux como o Ubuntu ou Debian, com facilidades para a&lt;br /&gt;instalação de aplicativos, uma maneira rápida é usar as ferramentas da própria&lt;br /&gt;distribuições para baixar os pacotes e dependências necessárias.&lt;br /&gt;Assim, se você está utilizando o Linux, eu recomendo que você compile a sua&lt;br /&gt;própria versão do Ruby. A versão 1.8.6 é a estável atualmente. Para compilá-la,&lt;br /&gt;utilize o procedimento abaixo:&lt;br /&gt;wget ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.8.6.tar.gz&lt;br /&gt;tar xvfz ruby-1.8.6.tar.gz&lt;br /&gt;cd ruby-1.8.6&lt;br /&gt;./configure --prefix=/usr&lt;br /&gt;make&lt;br /&gt;make install&lt;br /&gt;Para verificar a versão instalada do Ruby, use o seguinte comando:&lt;br /&gt;ruby -v&lt;br /&gt;ruby 1.8.6 (2007-09-24) [i486-linux]&lt;br /&gt;Uma vez que o Ruby esteja instalado, é hora de fazer o mesmo com o Rails. O&lt;br /&gt;procedimento é bem simples: basta executar o comando abaixo1:&lt;br /&gt;gem install rails --include-dependencies&lt;br /&gt;Com os passos acima finalizados, você está pronto para começar o&lt;br /&gt;desenvolvimento em Rails.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1453640782299760393-8272462809276211903?l=upsource.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://upsource.blogspot.com/feeds/8272462809276211903/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1453640782299760393&amp;postID=8272462809276211903&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/8272462809276211903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/8272462809276211903'/><link rel='alternate' type='text/html' href='http://upsource.blogspot.com/2010/03/instalacao-em-linux.html' title='Instalação em Linux'/><author><name>Up Source</name><uri>http://www.blogger.com/profile/15805589682459153149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='19' src='http://3.bp.blogspot.com/_nxp6wKOWXWY/S8kwiNGv-_I/AAAAAAAAACs/N5YBk7E4uOw/S220/up.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1453640782299760393.post-3544477185772394701</id><published>2010-03-10T10:38:00.000-08:00</published><updated>2010-03-10T10:39:42.252-08:00</updated><title type='text'>Instalação em Mac OS</title><content type='html'>No Mac OS 10.5 em diante, o ruby e o rails já vêm pré-instalados por padrão. O&lt;br /&gt;único problema é que a versão do Rails que já vêm instalada não é a versão mais&lt;br /&gt;recente. Para atualizar o seu sistema siga os seguintes procedimentos:&lt;br /&gt;1-Instale o XCode Tools, presente no CD de instalação do MAC OS, na categoria&lt;br /&gt;“Optional Installs” (arquivoXcodeTools.mpkg)&lt;br /&gt;2-Abra o terminal e digite:&lt;br /&gt;sudo gem update --include-dependencies&lt;br /&gt;3 - Selecione as opções padrões de intalação e alpós alguns instantes seu sistema&lt;br /&gt;estará atualizado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1453640782299760393-3544477185772394701?l=upsource.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://upsource.blogspot.com/feeds/3544477185772394701/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1453640782299760393&amp;postID=3544477185772394701&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/3544477185772394701'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/3544477185772394701'/><link rel='alternate' type='text/html' href='http://upsource.blogspot.com/2010/03/instalacao-em-mac-os.html' title='Instalação em Mac OS'/><author><name>Up Source</name><uri>http://www.blogger.com/profile/15805589682459153149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='19' src='http://3.bp.blogspot.com/_nxp6wKOWXWY/S8kwiNGv-_I/AAAAAAAAACs/N5YBk7E4uOw/S220/up.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1453640782299760393.post-2697804302020939690</id><published>2010-03-10T10:37:00.000-08:00</published><updated>2010-03-10T10:46:33.608-08:00</updated><title type='text'>Instalação em Windows</title><content type='html'>No Windows existe o Ruby One-Click Installer. Esse instalador pode ser baixado de&lt;br /&gt;&lt;a href="http://help.adobe.com/en_US/Acrobat/9.0/Professional/WS981E9B4B-F8E4-4511-ADE4-2D7380472979.html"&gt;http://rubyforge.org/projects/rubyinstaller/&lt;/a&gt; e basta rodá-lo para ter um ambiente&lt;br /&gt;Ruby para Windows (apenas Ruby, sem Rails por enquanto).&lt;br /&gt;Vamos agora utilizar o gerenciador de pacotes GEM para instalar o próprio Rails e&lt;br /&gt;mais algumas outras GEMS que serão necessárias durante o desenvolvimento. Abra&lt;br /&gt;a linha de comando do seu Windows e digite.&lt;br /&gt;&lt;br /&gt;gem install sqlite3-ruby&lt;br /&gt;gem install mysql&lt;br /&gt;gem install rails&lt;br /&gt;&lt;br /&gt;Pronto, agora você tem um ambiente completo Ruby on Rails em Windows.&lt;br /&gt;Alternativamente, ao invés de realizar manualmente a instalação você pode baixar o&lt;br /&gt;InstantRails, uma aplicação que contém tudo o que é necessário para começar o&lt;br /&gt;desenvolvimento: Ruby, Rails, servidores Apache e Mongrel além do mySQL. O&lt;br /&gt;InstantRails é tão simples que nem é necessário instalá-lo – basta descompactá-lo&lt;br /&gt;na pasta desejada e rodar a aplicação.&lt;br /&gt;O InstantRails pode ser baixado em &lt;a href="http://instantrails.rubyforge.org/wiki/wiki.pl"&gt;http://instantrails.rubyforge.org&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1453640782299760393-2697804302020939690?l=upsource.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://upsource.blogspot.com/feeds/2697804302020939690/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1453640782299760393&amp;postID=2697804302020939690&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/2697804302020939690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/2697804302020939690'/><link rel='alternate' type='text/html' href='http://upsource.blogspot.com/2010/03/instalacao-em-windows.html' title='Instalação em Windows'/><author><name>Up Source</name><uri>http://www.blogger.com/profile/15805589682459153149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='19' src='http://3.bp.blogspot.com/_nxp6wKOWXWY/S8kwiNGv-_I/AAAAAAAAACs/N5YBk7E4uOw/S220/up.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1453640782299760393.post-238673010116729169</id><published>2010-03-10T10:35:00.000-08:00</published><updated>2010-03-10T10:37:48.708-08:00</updated><title type='text'>Configuração e instalação</title><content type='html'>Este material assume que você tenha familiaridade com programação Web em&lt;br /&gt;geral, e com pelo menos um banco de dados relacional. Na elaboração deste&lt;br /&gt;material foi utilizado o MySQL, por ele ser um banco de fácil instalação e por estar&lt;br /&gt;amplamente difundido na web, mas você pode usar o que mais se adaptar ao seu&lt;br /&gt;ambiente, principalmente considerando que o Rails esconde a maior parte da&lt;br /&gt;complexidade nesssa área e que ele suporta os principais bancos de dados&lt;br /&gt;existentes no mercado.&lt;br /&gt;Para começar, vamos assumir que você tenha um banco de dados instalado e que&lt;br /&gt;esteja pronto para instalar a linguagem Ruby e o Rails.&lt;br /&gt;&lt;br /&gt;Dica de Ruby - GEM&lt;br /&gt;Nas instalações para Windows, Mac e Linux será utilizado o GEM.&lt;br /&gt;Gem é o gerenciador de pacotes do Ruby, capaz de baixar os&lt;br /&gt;arquivos necessários da Web e instalá-los no local apropriado dentro&lt;br /&gt;das bibliotecas do Ruby sem que o desenvolvedor tenha que se&lt;br /&gt;preocupar com os detalhes do processo&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1453640782299760393-238673010116729169?l=upsource.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://upsource.blogspot.com/feeds/238673010116729169/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1453640782299760393&amp;postID=238673010116729169&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/238673010116729169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/238673010116729169'/><link rel='alternate' type='text/html' href='http://upsource.blogspot.com/2010/03/configuracao-e-instalacao.html' title='Configuração e instalação'/><author><name>Up Source</name><uri>http://www.blogger.com/profile/15805589682459153149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='19' src='http://3.bp.blogspot.com/_nxp6wKOWXWY/S8kwiNGv-_I/AAAAAAAAACs/N5YBk7E4uOw/S220/up.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1453640782299760393.post-608153653294011055</id><published>2010-03-10T10:34:00.000-08:00</published><updated>2010-03-10T10:35:19.481-08:00</updated><title type='text'>A LINGUAGEM RUBY</title><content type='html'>Ruby é uma linguagem de script interpretada para programação orientada a objetos&lt;br /&gt;com uma filosofia e sintaxe muito limpa que fazem com que programar seja&lt;br /&gt;elegante e divertido.&lt;br /&gt;A linguagem foi criada no início da década de 90 no Japão e rapidamente ganhou&lt;br /&gt;popularidade no mundo inteiro por sua filosofia de ter foco nas pessoas.&lt;br /&gt;Para se tornar um desenvolvedor Ruby on Rails pleno é importante conhecer à&lt;br /&gt;fundo a linguagem Ruby. Existem dezenas de livros, tutoriais e sites que podem lhe&lt;br /&gt;4&lt;br /&gt;ajudar, com grande destaque para o próprio site da linguagem Ruby (http://&lt;br /&gt;www.ruby-lang.org), e o livro virtual “Why's (Poignant) Guide to Ruby” (http://&lt;br /&gt;poignantguide.net/ruby/ - com versão em português em http://github.com/&lt;br /&gt;carlosbrando/poignant-br/).&lt;br /&gt;A quem se destina este livro&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1453640782299760393-608153653294011055?l=upsource.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://upsource.blogspot.com/feeds/608153653294011055/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1453640782299760393&amp;postID=608153653294011055&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/608153653294011055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/608153653294011055'/><link rel='alternate' type='text/html' href='http://upsource.blogspot.com/2010/03/linguagem-ruby.html' title='A LINGUAGEM RUBY'/><author><name>Up Source</name><uri>http://www.blogger.com/profile/15805589682459153149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='19' src='http://3.bp.blogspot.com/_nxp6wKOWXWY/S8kwiNGv-_I/AAAAAAAAACs/N5YBk7E4uOw/S220/up.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1453640782299760393.post-5624985401023173401</id><published>2010-03-10T10:33:00.000-08:00</published><updated>2010-03-10T10:34:03.884-08:00</updated><title type='text'>O que é Ruby on Rails</title><content type='html'>Ruby on Rails é uma tecnologia que permite desenvolver sites dinâmicos orientados&lt;br /&gt;a banco de dados e aplicações para a web - de forma semelhante a tantas outras&lt;br /&gt;linguagens de programação como PHP ou ASP.&lt;br /&gt;Porém, apesar de ser mais novo que estas duas linguagens, o Ruby on Rails vêm&lt;br /&gt;crescendo de forma espantosa e têm chamado a atenção de desenvolvedores de&lt;br /&gt;todo o mundo, isso porque ele permite aumentar a velocidade e facilidade no&lt;br /&gt;desenvolvimento de projetos.&lt;br /&gt;Tecnicamente falando, Rails é um framework criado na linguagem de programação&lt;br /&gt;Ruby (daí o nome Ruby on Rails),&lt;br /&gt;Um framework é como um esqueleto em cima do qual se desenvolve uma aplicação&lt;br /&gt;completa. Existem dezenas de frameworks disponíveis e muitos deles existem a&lt;br /&gt;mais tempo que o Rails, então o que faz do Rails algo tão importante? A resposta é&lt;br /&gt;simples: O Rails foi criado com o intuito de permitir o desenvolvimento ágil, com&lt;br /&gt;alta produtividade, escrevendo poucas linhas de código e tendo muito resultado&lt;br /&gt;como consequência. Aplicações que levam semanas ou meses para desenvolver em&lt;br /&gt;linguagens tradicionais podem ser feitas em horas ou dias com Ruby on Rails.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1453640782299760393-5624985401023173401?l=upsource.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://upsource.blogspot.com/feeds/5624985401023173401/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1453640782299760393&amp;postID=5624985401023173401&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/5624985401023173401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/5624985401023173401'/><link rel='alternate' type='text/html' href='http://upsource.blogspot.com/2010/03/o-que-e-ruby-on-rails.html' title='O que é Ruby on Rails'/><author><name>Up Source</name><uri>http://www.blogger.com/profile/15805589682459153149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='19' src='http://3.bp.blogspot.com/_nxp6wKOWXWY/S8kwiNGv-_I/AAAAAAAAACs/N5YBk7E4uOw/S220/up.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1453640782299760393.post-3755655452067913828</id><published>2010-03-10T10:31:00.001-08:00</published><updated>2010-03-10T10:31:28.759-08:00</updated><title type='text'>Ruby On Rails</title><content type='html'>Olá!&lt;br /&gt;&lt;br /&gt;Outro dia eu estava navegando na Web procurando mais textos sobre acessibilidade e Ajax, e acabei indo parar no site do Ronaldo Ferraz. Ali encontrei um tutorial sobre Ruby on Rails. Como já havia ouvido falar sobre esse framework no site da Collaboraid, acabei dando uma fuçada e acho que já posso me considerar fã de Ruby e um possível usuário o Rails.&lt;br /&gt;&lt;br /&gt;Ruby on Rails é um framework para desenvolvimento de aplicações baseado na Web que usa a linguagem de programação orientada a objetos Ruby. O Rails vem sendo desenvolvido pela comunidade há mais de dois anos com várias aplicações comerciais.&lt;br /&gt;&lt;br /&gt;Fiz alguns testes portando alguns módulos de um sistema que estou desenvolvendo em PHP e pude constatar que a velocidade de desenvolvimento com o Rails é consideravelmente maior que com PHP. Para se ter uma ideia, eu gastei 15 minutos para fazer um módulo que eu havia gasto quase um dia para fazer em PHP. Obviamente o módulo que portei estava em PHP puro(já peguei o projeto no meio, e ainda não pude mudar a metodologia), sem nenhum framework, pois com o Seagull eu já havia experimentado algo parecido em termos de velocidade.&lt;br /&gt;&lt;br /&gt;A despeito das diferenças das linguagens(PHP e Ruby), uma coisa que me deixou bastante impressionado com o Rails é a forma como ele implementa o MVC, e como o sistema de template dele é simples tanto para o desenvolvedor quanto para um possível designer.&lt;br /&gt;&lt;br /&gt;Ainda quero gastar mais tempo estudando, mas quis comentar o quanto achei interessante o framework.&lt;br /&gt;&lt;br /&gt;Abraços!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1453640782299760393-3755655452067913828?l=upsource.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://upsource.blogspot.com/feeds/3755655452067913828/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1453640782299760393&amp;postID=3755655452067913828&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/3755655452067913828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/3755655452067913828'/><link rel='alternate' type='text/html' href='http://upsource.blogspot.com/2010/03/ruby-on-rails.html' title='Ruby On Rails'/><author><name>Up Source</name><uri>http://www.blogger.com/profile/15805589682459153149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='19' src='http://3.bp.blogspot.com/_nxp6wKOWXWY/S8kwiNGv-_I/AAAAAAAAACs/N5YBk7E4uOw/S220/up.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1453640782299760393.post-2782561625123235162</id><published>2010-03-10T09:30:00.001-08:00</published><updated>2010-03-10T09:56:33.321-08:00</updated><title type='text'>Try Ruby – Aprenda Ruby sem precisar de qualquer programa</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_nxp6wKOWXWY/S5fcmNBk6xI/AAAAAAAAAA0/GbyAyd8QQuQ/s1600-h/tryruby.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 64px;" src="http://2.bp.blogspot.com/_nxp6wKOWXWY/S5fcmNBk6xI/AAAAAAAAAA0/GbyAyd8QQuQ/s320/tryruby.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5447064823217318674" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;O Try Ruby é uma interface web que possibilita que os novos desenvolvedores de Ruby on Rails possam criar e testar suas aplicações sem precisar de nenhuma infra-estrutura ou programa instalado em sua máquina. Para quem não conhece, o Ruby é uma linguagem para o desenvolvimento rápido de aplicações para web. Grandes sites como Twitter o usam em seus sistemas.&lt;br /&gt;&lt;br /&gt;LOGO MAIS O CURSO RUBY&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1453640782299760393-2782561625123235162?l=upsource.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://upsource.blogspot.com/feeds/2782561625123235162/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1453640782299760393&amp;postID=2782561625123235162&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/2782561625123235162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/2782561625123235162'/><link rel='alternate' type='text/html' href='http://upsource.blogspot.com/2010/03/curso-css-desde-o-inicio.html' title='Try Ruby – Aprenda Ruby sem precisar de qualquer programa'/><author><name>Up Source</name><uri>http://www.blogger.com/profile/15805589682459153149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='19' src='http://3.bp.blogspot.com/_nxp6wKOWXWY/S8kwiNGv-_I/AAAAAAAAACs/N5YBk7E4uOw/S220/up.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_nxp6wKOWXWY/S5fcmNBk6xI/AAAAAAAAAA0/GbyAyd8QQuQ/s72-c/tryruby.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1453640782299760393.post-8217467333248057448</id><published>2010-03-10T09:21:00.000-08:00</published><updated>2010-03-10T09:26:59.990-08:00</updated><title type='text'>Up Source</title><content type='html'>Boa tarde, minha galera esse site está sendo criado para postar noticias sobre tecnologia, cursos e muito mais para vocês. Todo o dia estará sendo postados vídeos para vocês aqui no Blogger Up Source - Por que tecnologia e conhecimento e só no bogger - Up Source -&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/1453640782299760393-8217467333248057448?l=upsource.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://upsource.blogspot.com/feeds/8217467333248057448/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=1453640782299760393&amp;postID=8217467333248057448&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/8217467333248057448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1453640782299760393/posts/default/8217467333248057448'/><link rel='alternate' type='text/html' href='http://upsource.blogspot.com/2010/03/upsource.html' title='Up Source'/><author><name>Up Source</name><uri>http://www.blogger.com/profile/15805589682459153149</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='19' src='http://3.bp.blogspot.com/_nxp6wKOWXWY/S8kwiNGv-_I/AAAAAAAAACs/N5YBk7E4uOw/S220/up.jpg'/></author><thr:total>0</thr:total></entry></feed>
