Feed Artigos Comentários


Arquivos por CategoriaRails



Desenvolvimento &Rails &TI André Dourado on 02 dez 2009

Apostila de Ruby on Rails liberada pela Caelum para download

A Caelum há mais de dois anos criou um curso de Rails, depois de passado algum tempo desde sua terceira reformulação, está disponibilizando o material utilizado, para toda a comunidade, seguindo a tradição da Caelum em compartilhar conhecimento.

A apostila cobre itens de Ruby desde o básico da linguagem até meta programação, conhecimentos necessários para utilizar o Rails, onde estudamos partes importantes como Active Record, rotas, Ajax, paginação e integração com Java.

São quase 150 páginas para o auxiliar no aprendizado do Rails. Você pode fazer o download pelo link: http://www.caelum.com.br/curso/rr-71-ruby-on-rails/

Fonte: Caelum

Post visualizado 456 vezes.

Desenvolvimento &Rails &TI André Dourado on 18 set 2009

Os problemas do pensamento do Visual Studio (e outras IDEs)

Post do Fábio Akita, onde ele traduz a palestra entitulada “O Visual Studio estraga nossas mentes?“, apresentada no NYC .NET Developer’s Group, em 20 de Outubro de 2005 por Charles Petzold. Concordo em grande parte com o que foi colocado:

De tempos em tempos alguém me pergunta algo do tipo “Que IDE você usa para programar em Ruby?” E todos ficam surpresos ou frustrados quando eu digo “Nenhum, apenas um editor de textos competente.” Parece que a maioria dos programadores de Visual Basic, Delphi, Java, C#, VB.NET, simplesmente não conseguem sair do dogma dos IDEs com IntelliSense.

Eu, felizmente, comecei a programar dBase numa era onde o máximo em editor de textos era o Wordstar. No DOS eu usei EDLIN e depois o Edit que vinha nos DOS acho que 5.0. Quando fui programador Clipper no começo da década de 90, meu editor favorito era o Norton Editor. Somado a ferramentas como Sidekick, eu tinha a estação de desenvolvimento mais poderosa que se poderia querer: um editor de textos e só.

Quando o Java surgiu, um IDE com capacidades de auto-complete eram obrigatórias. Em .NET a mesma coisa, e pelas mesmas razões. Aqui eu traduzo a palestra entitulada O Visual Studio estraga nossas mentes?, apresentada no NYC .NET Developer’s Group, em 20 de Outubro de 2005 por Charles Petzold. Ele faz uma longa análise dos fundamentos de porque um programador viciado nos dogmas impostos pelo Visual Studio está se tornando um programador ruim.

Atualmente, eu programo apenas Ruby (e outras coisas como Javascript de vez em quando) apenas no Textmate, um competente editor de textos, reminiscente de inspirações em Emacs e Vim, outros dois excelentes editores. E não sinto falta de Eclipses, Netbeans ou qualquer coisa desse tipo e, obviamente, nenhuma falta do Visual Studio. Ah sim, precisar de auto-complete só mostra uma coisa: que as APIs estão sendo muito porcamente desenhadas ultimamente, tornando-as ridiculamente longas!

Recomendo ler o artigo inteiro, pois só traduzi as partes relevantes ao meu ponto. Vamos à tradução:

PS: Vale a pena descrever o paradoxo: não dá para efetivamente ser produtivo em .NET sem Visual Studio, em Java sem Eclipse/Netbeans/etc ou ObjC sem XCode. Isso é um fato. Na prática mesmo, a solução não é fazer C# em Notepad. Esse é o ponto a se pensar ;-)

O post completo pode ser encontrado no link: http://akitaonrails.com/2009/09/17/tradu–o-os-problemas-do-pensamento-do-visual-studio-e-outras-ides

Post visualizado 409 vezes.

.NET &Desenvolvimento &Rails &TI André Dourado on 23 jul 2009

Discussão interessante sobre ASP.Net MVC e C# ou Ruby e Rails?

Uma discussão interessante no grupo de discussão DotNetArchitects, sobre vantagens e desvantagens do uso de ASP.Net MVC e C# ou Ruby e Rails, no link: http://groups.google.com/group/dotnetarchitects/browse_thread/thread/39ce51f8fd30a955?hl=pt&pli=1

Fonte: Twitter Giovanni Bassi

Post visualizado 768 vezes.

Projetos &Rails &Redmine &TI André Dourado on 06 jul 2009

Tutorial Redmine – Gráficos no Redmine usando a API do Google Charts

Por André Dourado

Não sou um especialista nem em Redmine, nem em Rails, portanto essa pode não ser a melhor solução no tocante às ferramentas, mas acabou sendo uma forma simples de implementar gráficos de controle de nosso backlog no Redmine.

Descrição da Solução

Precisávamos de uma tabela para armazenar uma fotografia do backlog de nosso setor de desenvolvimento. Nessa tabela inserimos, através de uma tarefa agendada, diariamente às 2 da manhã: quantos tickets entraram e saíram no dia anterior e o total de tickets no backlog.

A partir dessa tabela geramos dois gráficos: um gráfico de linhas, com a quantidade diária de tickets abertos, outro de barras verticais, com a quantidade de tickets que entram e que saem.

Google Charts API

Google Charts API é uma ferramenta muito útil e interessante para quem desenvolve aplicações web e quer gerar gráficos de uma forma dinâmica. Esta API caracteriza-se pela facilidade de utilização e implementação, não sendo necessária a instalação de qualquer software ou frameworks. Para a sua utilização, basta a URL da API no qual serão referenciados os dados e características necessários para gerar o gráfico pretendido.

Os parâmetros são separados por “&”. Podem ser especificados quantos parâmetros se desejarem e pretenderem. Não pretendo aqui tentar esgotar as diversas opções de gráficos possíveis. A documentação completa da API pode ser encontrada em: http://code.google.com/intl/pt-BR/apis/chart/

Detalharei aqui apenas os que utilizamos em nossos gráficos, de forma que tenham um ponto de partida para que possam adaptá-los a suas necessidades.

Construção do Gráfico
“chs” Tamanho do gráfico gerado. Use chs=largura,altura. Ex: chs=430×225&

“cht” Especifica o tipo do gráfico. Linhas do tipo lc, onde são desenhadas diversas linhas para diversos conjuntos de dados, ou do tipo lxy, onde um par de conjuntos de dados é necessário para cada linha. Ex: cht=lc&

“chxt” Especifica os diversos eixos que serão usados no gráfico. O índice do primeiro eixo é 0, o índice do segundo eixo é 1 e assim por diante. Você pode especificar diversos eixos incluindo x, t, y ou r diversas vezes. Ex: chxt=x,y& onde x corresponde ao eixo 0 e y ao eixo 1.

“chxr” Define a escala de um eixo. O primeiro parâmetro é o número do eixo relacionado ao especificado em “chxt”. Os seguintes definem o início e o fim da faixa do eixo. Ex: chxr=1,0,150&

“chd=t” Codificação dos dados em forma de texto com dimensionamento de dados. Usa uma string de qualquer número positivo ou negativo em conjunto com um parâmetro de dimensionamento (chds). Ex: chd=t:108,111,111,111,120&

“chds” Maneira alternativa de definir a linha zero, combinado à codificação de texto. Um conjunto de dados que varia de -60 a 120, pode definir uma escala de -80 a 140 para deixar algum espaço acima e abaixo das barras. Ex: chds=0,150&

“chxl” Todos os rótulos de eixo são separados por uma barra vertical “|”.Os rótulos de eixo devem ser especificados em seqüência (0, seguido de 1, seguido de 2 e assim por diante). Ex: chxl=0:|25|26|27|28|29&

Formatação do Gráfico
“chls” Especifica os estilos de linha. Espessura da linha, comprimento da linha contínua, comprimento do segmento em branco. Ex: chls=2,1,0& linha de espessura média (2), linha não tracejada (1,0).

“chco” Especifica as cores das linhas, barras etc. Todos os valores de cores são números hexadecimais no formato RRGGBB. Ex: chco=DE091A,EBB671& mostra dois conjuntos de linhas/barras.

“chf” Especifica o preenchimento sólido com “bg ou c ou a,s,cor|”, onde “bg” para preenchimento de plano de fundo, “c” para preenchimento da área do gráfico ou “a” para aplicar transparência ao gráfico inteiro. é um número hexadecimal em formato RRGGBB. Ex: chf=c,lg,45,ffffff,0,b1cbfa,0.75|bg,s,fcfcfc&

“chm” Para colocar valores e marcadores sobre os pontos dos gráficos. São muitos os detalhes relativos a esse parâmetro. Sugiro consultar diretamente a documentação na Google: http://code.google.com/intl/pt-BR/apis/chart/#shape_markers2

“chma” Define as margens do gráfico. Use chma=esquerda,direita,topo,baixo. Ex: chma=30,20,20,30&

Por exemplo o gráfico de linha que utilizaremos no tutorial, seria gerado a partir da seguinte url:

http://chart.apis.google.com/chart?
chd=t:108,111,111,111,120&
chxl=0:|25|26|27|28|29&
chm=o,FF0000,0,0,6,0|o,FF0000,0,1,6,0|o,FF0000,0,2,6,0|o,FF0000,0,3,6,0|o,FF0000,0,4,6,0|
t108,FF0000,0,0,10,0|t111,FF0000,0,1,10,0|t111,FF0000,0,2,10,0|t111,FF0000,0,3,10,0|t120,FF0000,0,4,10,0&
cht=lc&
chxt=x,y&
chs=430x225&
chds=0,150&
chxr=1,0,150&
chco=FF0000&
chls=2,1,0&
chf=c,lg,45,ffffff,0,b1cbfa,0.75|bg,s,fcfcfc&
chma=30,20,20,30&
chdl=Tickets+Abertos&
chdlp=b

Criação do Modelo

1.Execute o comando de criação do modelo “backlogs”:

ruby script/generate model backlogs project_id:integer
back_date:date back_abertas:integer back_fechadas:integer back_total:integer

2.Execute a migração:

rake db:migrate

Instalação do Google Charts API

1.Instale a gem do Google Charts API. Mude para o diretório raiz do redmine e digite o seguinte comando:

gem install googlecharts

2.Adicione a nova gem no ambiente de sua aplicação. Edite o arquivo redmine/config/environment.rb e acrescente a linha: config.gem “googlecharts”, :lib => “gchart”

Rails::Initializer.run do |config|
  config.gem "googlecharts", :lib => "gchart"
end

3.Edite o arquivo redmine/app/controllers/application.rb e acrescente a linha: require “gchart”

require "gchart"
class ApplicationController < ActionController::Base
...

Implementação dos gráficos no Redmine

1.Edite o arquivo “redmine/app/controllers/projects_controller.rb” e insira as seguintes linhas:

  def graficos_backlog
    dados = ""
    legenda = ""
    pontos = ""
    pontos_barras = ""
    dados_abertas = ""
    dados_fechadas = ""
    max_total = 0
    max_abertas = 0
    max_fechadas = 0

    nponto = 8

    Backlogs.find(:all, :conditions => {:project_id, @project.id}, :o rder => "id desc", :limit => 9).each do |s|
      dados = "," + s.back_total.to_s() + dados
      dados_abertas = "," + s.back_abertas.to_s() + dados_abertas
      dados_fechadas = "," + s.back_fechadas.to_s() + dados_fechadas
      legenda = "|" + s.back_date.strftime("%d/%m") + legenda
      pontos = "|o,FF0000,0," + nponto.to_s() + ",6,0|t" + s.back_total.to_s() + ",FF0000,0," + nponto.to_s() + ",10,0" + pontos
      pontos_barras = "|t" + s.back_abertas.to_s() + ",FF0000,0," + nponto.to_s() + ",10,0|t" + s.back_fechadas.to_s() + ",FF0000,1," + nponto.to_s() + ",10,0" + pontos_barras

      nponto = nponto - 1

      if max_total < s.back_total
         max_total = s.back_total
      end

      if max_abertas < s.back_abertas
         max_abertas = s.back_abertas
      end

      if max_fechadas < s.back_fechadas
         max_fechadas = s.back_fechadas
      end
    end

    if dados.length > 0
      dados = "chd=t:" + dados[1, dados.length] + "&"
      dados_abertas = "chd=t:" + dados_abertas[1, dados_abertas.length] + "|" + dados_fechadas[1, dados_fechadas.length] + "&"
      legenda = "chxl=0:|" + legenda[1, legenda.length] + "&"
      pontos = "chm=" + pontos[1, pontos.length ] + "&"
      pontos_barras = "chm=" + pontos_barras[1, pontos_barras.length] + "&"

      # define pontos maximos dos graficos
      if max_total > 10
         multi = 1.1
      else
         multi = 2
      end

      max_graf_linha = "chds=0," + (max_total * multi).to_i().to_s() + "&chxr=1,0," + (max_total *multi).to_i().to_s() + "&"

      if max_abertas > max_fechadas
         max_barra = max_abertas
      else
         max_barra = max_fechadas
      end

      if max_barra >= 10
         multi = 1.1
      else
         multi = 2
      end

      max_graf_barra = "chxr=1,0," + (max_barra * multi).to_i().to_s() + "&chds=0," + (max_barra * multi).to_i().to_s() + "&"

      # define parametros de saida
      custom_linha = dados + legenda + pontos + max_graf_linha + "cht=lc&chxt=x,y&chs=430x225&chco=FF0000&chls=2,1,0&chf=c,lg,45,ffffff,0,b1cbfa,0.75|bg,s,fcfcfc&chma=30,20,20,30&chdl=Tickets+Abertos&chdlp=b"
      custom_barra = dados_abertas + pontos_barras + legenda + max_graf_barra + "cht=bvg&chs=430x225&chco=DE091A,EBB671&chbh=15,0,12&chxt=x,y&chs=430x225&chdlp=b&chdl=Abertos|Fechados&chf=c,lg,45,ffffff,0,b1cbfa,0.75|bg,s,fcfcfc&chma=30,20,20,30"
    else
      custom_linha = ""
      custom_barra = ""
    end

    {:custom_linha => custom_linha, :custom_barra => custom_barra}
  end

2.Ainda no arquivo “redmine/app/controllers/projects_controller.rb”, na definição da ação “Show” insira a seguinte linha:

    @graficos_backlog = graficos_backlog

3.No arquivo “redmine/app/views/projects/show.rhtml”, insira as seguintes linhas:

    <%= Gchart.line :size => '430x225',
                    :custom => @graficos_backlog[:custom_linha],
                    :format => 'image_tag' %>

3.Ainda no arquivo “redmine/app/views/projects/show.rhtml”, insira as seguintes linhas:

    <%= Gchart.bar :size => '430x225',
                   :custom => @graficos_backlog[:custom_barra],
                   :stacked => false,
                   :bar_width_and_spacing => '15,0,5',
                   :format => 'image_tag' %>

4.Inclua no arquivo “redmine/config/routes.rb” a linha:

map.resources :graficos_backlog

5.Reinicie o serviço do redmine para que as alterações tenham efeito.

O resultado final deve ser semelhante a tela abaixo:




Todos os arquivos mencionados nesse tutorial, podem ser baixados aqui, para que possam ter certeza onde inseri as linhas que mencionei.


Referências:
    API do Google Chart – Guia do desenvolvedor
    Google Charts With Rails
    Sexy Charts using Google API & Ruby



Post visualizado 1.541 vezes.

Agile &Desenvolvimento &Rails André Dourado on 11 abr 2009

Lançamentos Brasileiros sobre Ruby e Rails

A comunidade brasileira está andando rápido, recentemente tiveram vários lançamentos muito legais para todos os rubistas.

Primeiro, o Rodrigo Urubatan lançou mais um livro em português de Ruby on Rails, o Desenvolvimento Fácil e Rápido de Aplicações Web.

O Carlos Brando e mais um pessoal criaram a versão brasileira do conhecido site Ruby Inside, que sempre trás as melhores notícias do mundo Ruby e Rails. A melhor forma de se manter atualizado. Esse site nasceu na Inglaterra, pelo Peter Cooper, e se tornou um grupo de sites de notícias especializado em Ruby, Rails, JRuby e mais.

Depois de quase 1 ano em tradução e revisão, o livro O Guia (Comovente) do Why, um dos melhores livros para iniciantes em Ruby também foi lançado. Você pode ler online todo o conteúdo em português e começar a aprender não só a linguagem mas também o “estilo” do _Why, um dos programadores mais irreverentes da comunidade.

Finalmente, saiu uma versão “beta” da tradução do Rails Guides. Se não me engano começou com o Cassio Marques e logo envolveu mais tradutores da comunidade. Para quem não conhece, o Rails Guides nasceu de um esforço paralelo do Pratik Naik, um dos Rails Core, como resposta à antiga reclamação de “Rails é mal documentado”. Pois bem, este guia definitivamente derruba isso pois ele cobre todos os aspectos do Ruby on Rails, em detalhes, de maneira simples de seguir. Qualquer um que estiver aprendendo Rails irá se beneficiar. Mas ainda não acabou, se você quiser participar, entre em contato com eles.

Se você está iniciando, estes são excelentes materiais. E não deixe de participar do grupo Rails-br, ou, se é de São Paulo, participe do Guru-SP. Além dos fórums do RubyOnBR.org.

Fonte: %w(Akita On Rails) * 2.0

Post visualizado 1.990 vezes.

Agile &Rails &TI André Dourado on 09 abr 2009

Vídeos da MountainWest RubyConf 2009

A MountainWest RubyConf ocorreu de 13 a 14 de março em Salt Lake City. Todas as apresentações estao disponíveis no Confreaks.

Clique aqui: http://mwrc2009.confreaks.com/

Fonte: InfoQ

Post visualizado 357 vezes.

Agile &Desenvolvimento &Rails &TI André Dourado on 03 mar 2009

Rails + Agile na DDWorks

Por Rodrigo Yoshima
em Março 3, 2009

Antes de mais nada deixa eu avisar: eu estou vivo! Tirei um tempo de férias de escrever (aqui e na MundoJava), mas agora estou de volta! E para aquecer, vou relatar um projetinho divertido que participei.

Uma das maiores convicções que tenho sobre desenvolvimento de software é que não existem fórmulas mágicas, nem processos mágicos e nem certificações mágicas… O máximo de “mágico” que pode existir em desenvolvimento de software são alguns profissionais mágicos (infelizmente alguns são adeptos de magia negra). Além disso, “Processo Padrão” é uma coisa que não existe.

O projeto da DDWorks começou de maneira interessante. Numa dessas quintas-feiras de verão, um dos sócios me ligou e disse: “- Quero colocar um e-commerce no ar na semana que vêm”. (nem sei se ainda se usa a palavra e-commerce, mas ele disse assim!)

As condições são:

1. Nós não temos tempo de negociar, não temos tempo de firmar contrato, não temos tempo nem de “planejar” o projeto

2. Tem que estar no ar e vendendo até sexta-feira da semana que vem

3. Tem que ter integração com e-payment ainda a ser definido (no fim optamos pelo PagSeguro)

4. O desenvolvedor tem que estar aqui presente. Vamos dar todos os subsídios e decisões em tempo hábil

5. Já falei que tem que estar no ar na semana que vem?

Qualquer pessoa poderia falar que isso é impossível, porém, o cliente estava disposto a fazer o que fosse necessário para atingir esse objetivo, e nenhum outro fornecedor deu atenção a esse projeto. Eles acharam isso “impossível”. Eu até imagino aqueles vendedores acompanhados de gerentes de projeto (ambos de gravata) dizendo “- Vamos com calma!”, “- Precisamos planejar direitinho.”, “- Vamos detalhar mais…”. O mercado está cansado dessas ladainhas! Como seria um desafio interessante topei na hora. Traçamos alguns objetivos juntos e marcamos uma reunião de planejamento na segunda-feira às 9:00.

Planejamento Inicial de projeto é uma das coisas que mais gosto de fazer. Como o dead-line já estava definido (sexta-feira!!!) essa reunião seria importante para definirmos SOMENTE o que era necessário para VENDER. Toda e qualquer firula a mais deveria ser posta de lado. Este planejamento inicial não tomou mais de 30 minutos, pois o cronometro de 40 horas já estava ticando. O objetivo do projeto era “vender pela Internet”. Planejamentos exigem modelagem, então nós modelamos….


Para iniciar qualquer trabalho nós fizemos um Mapa de Navegação seguindo algo parecido com um diagrama de atividades, mas sem formalidade alguma. Nós precisamos desse modelo para saber o mínimo necessário para “vender”. Além disso nós também usamos esse modelo para saber quais telas eram mais complexas para iniciar o projeto por elas, diminuindo o risco. Sim, esse rascunho era nosso “Product Backlog” para os CSMs de plantão.

Como seriam só 5 dias as iterações eram diárias. Para o projeto, o fim da quarta-feira (a terceira iteração) era o momento crítico. Apesar de ter outras pessoas gerando conteúdo, imagens e modelos, somente eu estava programando no Rails.

Uma das perguntas que faço para meus alunos no Workshop Scrum é: Com relação a pessoas, o que você precisa para desenvolver software? Pare de ler este artigo e tente responder isso mentalmente. Se você perguntar para um gerente de fábrica de software ele vai responder algo como “1 analista de negócio, 2 analistas de sistemas, 4 programadores e 1 tester”. Acredite, eu já ouvi isso de um deles. Espero que você não tenha respondido isso mentalmente. Mas a resposta correta é que para desenvolver software você precisa de dois tipos de pessoas:

a. Alguém que sabe do negócio
b. Alguém que sabe desenvolver software

No caso da DDWorks, com iterações diárias, praticamente nós fizemos um desenvolvimento conjunto entre os caras de negócio e o programador (eu). Um “pair programming” do Developer com o Product Owner. A adoção do Rais foi definitiva para que cada pedaço de funcionalidade incrementado em 3 minutos fosse rapidamente testado junto ao cliente. Feedback rápido foi determinante para o sucesso. Eu acredito que o futuro do desenvolvimento de software é algo parecido com isso: programadores armados até os dentes com arquiteturas ágeis e clientes participando ativamente do projeto ao ponto de participar de “pair programming”.


Durante essa semana nós fizemos muita inspeção e adaptação. Muitas coisas nós mudamos durante o desenvolvimento. O próprio cliente teve que fazer concessões sobre alguns detalhes (eles são uma agência de design, assim, teve alguns desgastes sobre o tempo investido na “beleza” do site). Não achem que foi “fácil”, quer dizer, programar foi fácil, mas fazer cada detalhe solicitado caber no prazo e no orçamento sem comprometer o objetivo é que foi dureza. Na quarta-feira fizemos o primeiro deployment na Locaweb…. na sexta-feira o site estava no ar!!!! Acessem aí:

http://www.docstyles.com.br

(veja a página “aprenda mais” para saber o que a DDWorks faz)

Uma coisa que achei bastante interessante nesse projeto: nós não usamos Stories, não usamos reuniões, não usamos ScrumMaster, não usamos Kanban, não usamos “Test First”. Não teve qualquer besteirol Agile. Você considera esse projeto ágil?

Guarde esse princípio: Para coisas simples as soluções são simples.

Gostaria agradecer ao pessoal do Brazilian Rails. A contribuição de vocês ajudou muito e poupou um bocado de tempo.

Fonte: Débito Técnico

Post visualizado 323 vezes.

Desenvolvimento &Rails &TI André Dourado on 27 fev 2009

Escalabilidade com Rails

O Antonio Cangiano tem razão quando diz que tem muita pouca menção à incrível série de screencasts gratuitos da New Relic. Ela oferece um serviço pago muito legal que monitora sua aplicação Rails de produção em detalhes. Para isso você se registra no site, instala um plugin na sua aplicação e ela passa a enviar dados de volta à New Relic, que então compila esses dados e lhe dá um Raio-X do comportamento da sua aplicação. Eu uso a versão gratuita no meu blog, que me dá informações básicas mas já valiosas.

A New Relic começou uma iniciativa chamada RailsLab com o objetivo de agregar informações sobre escalabilidade e performance de Ruby on Rails. E a primeira série é a Scaling Rails, produzida em conjunto com o Gregg Pollack, da RailsEnvy.

Já existem 12 episódios disponíveis (usem o link de iTunes para quem quer assinar). São screencasts explicando o básico de responsibidade de páginas, muitas técnicas de caching do básico ao avançado, sobre o próprio plugin RPM da New Relic, Memcached e mais. Qualquer um que queira colocar um website em Rails no ar deve assistir. E mesmo quem não é de Rails pode tirar proveito pois essas técnicas não são específicas de Rails. Memcached é usado por sistemas em PHP, Java, Python. A implementação muda mas a técnica é a mesma. Portanto, vamos aprender!

Fonte: %w(Akita On Rails) * 2.0

Post visualizado 652 vezes.

Rails &Redmine &Tutorial André Dourado on 16 fev 2009

Tutorial de Instalação do Redmine em Ambiente Windows+Apache+Mongrel+MySQL

Por: André Dourado

Configuração de um servidor de produção para o Redmine, em ambiente Windows, servidor http Apache+Mongrel, acessando base de dados armazenada no MySQL. Este post tem a finalidade de descrever esse processo, passo a passo.

Requisitos


Windows XP SP2: este tutorial foi feito utilizando um XP SP2 previamente instalado. Provavelmente funcionará sem problemas em outras versões de Windows.

Apache Webserver 2.x: neste tutorial foi utilizada a versão “Win32 Binary without crypto (no mod_ssl) (MSI Installer)” que pode ser obtida no endereço: http://ftp.unicamp.br/pub/apache/httpd/binaries/win32/apache_2.2.11-win32-x86-no_ssl.msi

One-Click Ruby Installer: neste tutorial foi utilizada a versão “One-Click Ruby Installer 1.8.6-25″ que pode ser obtida no endereço: http://rubyforge.org/frs/download.php/18566/ruby186-25.exe

MySQL: neste tutorial foi utilizada a versão “mysql-essential-5.5.0-m2-win32″ que pode ser obtida no endereço: http://ftp.astral.ro/mirrors/mysql.com/Downloads/MySQL-5.5/mysql-essential-5.5.0-m2-win32.msi

Redmine: neste tutorial foi utilizada a versão “redmine-0.8.1″ que pode ser obtida no endereço: http://rubyforge.org/frs/download.php/51748/redmine-0.8.1.zip

Instalação do Apache Web Server


1.Execute o instalador do Apache Webserver, clicando sobre o arquivo “apache_2.2.11-win32-x86-no_ssl.msi” a partir do Windows Explorer. Clique então sobre o botão “Next”.

2.Selecione a opção “I accept the terms…” e clique sobre o botão “Next”.

3.Clique sobre o botão “Next”.

4.Informe os endereços solicitados e clique no botão “Next”.

5.Selecione a opção “Typical” e clique sobre o botão “Next”.

6.Clique sobre o botão “Change…” para alterar o caminho onde o servidor será instalado.

7.Informe o caminho desejado. Neste tutorial utilizamos o caminho “c:\apache”. Clique sobre o botão “Ok”.

8.Clique sobre o botão “Next”.

9.Clique sobre o botão “Install”.

10.Clique sobre o botão “Finish”.

11.Teste se o servidor foi instalado corretamente, digitando “http://localhost” no campo url do browser. Se tudo estiver ok, a tela apresentada será semelhante a tela abaixo:


Instalação do Ruby


1.Execute o instalador do Ruby, clicando sobre o arquivo “ruby186-25.exe” a partir do Windows Explorer. Clique então sobre o botão “Next”.

2.Clique sobre o botão “I Agree”.

3.Clique sobre o botão “Next”.

4.Informe o caminho desejado. Neste tutorial utilizamos o caminho “c:\ruby”. Clique sobre o botão “Next”.

5.Clique sobre o botão “Install”.

6.Clique sobre o botão “Next”.

7.Clique sobre o botão “Finish”.


Instalação dos pacotes Rails, Mongrel, Win32 Services


1.Os próximos passos serão executados em linha de comando do Windows, para isso clique no botão iniciar do Windows. Clique em “Executar” e na linha de comando digite “cmd” e pressione a tecla “Enter”. Todas as operações levam alguns minutos e é necessário que você esteja conectado à internet.

2.Mude para o diretório “c:\ruby\bin” e digite o comando de atualização do gerenciador de pacotes do Ruby RubyGems:

    gem update --system

3.Digite o comando de atualização e instalação do Rails:

Obs: Em uma instalação no Windows Vista tive o seguinte erro:

C:\ruby\bin>gem install rails
ERROR: While executing gem ... (Errno::ENOENT)
No such file or directory - C:\Users\André Dourado

Provavelmente pelo espaço no caminho do diretório. Setei a variável “userprofile” para o diretório do ruby e o problema foi solucionado.

C:\ruby\bin>set userprofile=c:\ruby

    gem install rails

4.Digite o comando de atualização e instalação do Mongrel:

    gem install mongrel

5.Digite o comando de atualização e instalação do suporte aos serviços Win32:

    gem install win32-service

6.Digite o comando de atualização e instalação do mongrel como serviço Win32:

    gem install mongrel_service


Instalação do MySQL


1.Execute o instalador do MySQL, clicando sobre o arquivo “mysql-essential-5.1.31-win32.msi” a partir do Windows Explorer. Clique então sobre o botão “Next”.


2.Clique sobre o botão “Next”.


3.Clique sobre o botão “Change”.


4.Entre com o caminho da instalação, no caso “c:\mysql”. Clique sobre o botão “Ok”.


5.Clique sobre o botão “Next”.


6.Clique sobre o botão “Install”.


7.Clique sobre o botão “Next”.


8.Clique sobre o botão “Next”.


9.Clique sobre o botão “Finish”.


10.Clique sobre o botão “Next”.


11.Clique sobre o botão “Next”.


12.Clique sobre o botão “Next”.


13.Clique sobre o botão “Next”.


14.Clique sobre o botão “Execute”.


15.Clique sobre o botão “Finish”.

Instalação do Redmine


1.Clique com o botão da direita sobre o arquivo zip do Redmine e selecione a opção “Extrair tudo…”. Ao abrir o “Assistente para extração” clique no botão “Avançar”. Na próxima tela, no campo de diretório de destino, digite “c:\apache\htdocs”.

2.Para facilitar a navegação pelos diretórios do aplicativo, renomeie o diretório criado pelo Redmine de “redmine-0.8.1” para apenas “redmine”;

3.Copie o arquivo “config\database.yml.example” para “config\database.yml”. Neste tutorial utilizamos o banco de dados MySql, com o usuário “root” sem senha e será executado em nossa máquina local. Para este setup a seção “production:” do arquivo “database.yml”, deve ficar:

   production:
    adapter: mysql
    database: redmine
    host: localhost
    username: root
    password: <senha_mysql>
    encoding: utf8

4.Os próximos passos serão executados em linha de comando do Windows, para isso clique no botão iniciar do Windows. Clique em “Executar” e na linha de comando digite “cmd” e pressione a tecla “Enter”.

5.Mude para o diretório “c:\mysql\bin” e digite o comando de execução do mysql para o usuário “root” no banco de dados mysql.

    mysql -u root mysql

6.Crie a estrutura do banco de dados “redmine” com o comando:

    create database redmine character set utf8;

7.Saia do MySql digitando o comando “quit” e pressionando a tecla “Enter”.

8.Mude para o diretório do redmine “c:\apache\htdocs\redmine”. Crie a estrutura do banco de dados “redmine”, digitando o comando:

    \ruby\bin\rake db:migrate RAILS_ENV=production

9.Insira os dados padrão de configuração no banco de dados, digitando o comando:

    \ruby\bin\rake redmine:load_default_data RAILS_ENV=production

Ao ser solicitado para informar a língua desejada, digite “pt-br” e pressione a tecla “Enter”.

10.Instale o serviço que irá executar o servidor Mongrel para o Redmine na porta 4000, digitando o comando:

    \ruby\bin\mongrel_rails service::install -N Redmine -c c:\apache\htdocs\redmine -p 4000 -e production

11.Inicie o serviço, digitando o comando:

    net start Redmine

12.Através do browser teste se o Redmine está no ar. Acesse o endereço “http:\\localhost:4000\login”


Configuração do Apache


1.Crie o arquivo de configuração de proxy para a aplicação “c:\apache\conf\http-proxy-redmine.conf”, com o seguinte conteúdo:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
ProxyRequests Off

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

Alias /redmine “C:/apache/htdocs/redmine/public”
<Directory “C:/apache/htdocs/redmine/public”>
    Options Indexes FollowSymLinks
    AllowOverride none
    Order allow,deny
    Allow from all
</Directory>

ProxyPass /redmine/images !
ProxyPass /redmine/stylesheets !
ProxyPass /redmine/javascripts !

ProxyPass /redmine/ http://127.0.0.1:4000/
ProxyPass /redmine http://127.0.0.1:4000/
ProxyPassReverse /redmine http://127.0.0.1:4000/

2.Edite o arquivo de configuração do Apache “c:\apache\conf\httpd.conf”. Acrescente na última linha do arquivo a seguinte linha:

Include conf/http-proxy-redmine.conf

3.Reinicie o serviço do Apache pelo gerenciador de serviços do Windows.

Configuração do Proxy Reverso


O Rails cria internamente endereços de URL para links de folha de estilo, que faz com que a aplicação não execute da forma correta, através do proxy do Apache. Utilizaremos um plugin do Rails, que altera o modo como as URLs são criadas.

1.Mude para o diretório do redmine “c:\apache\htdocs\redmine”. Instale o plugin, digitando o comando abaixo. Responda para a url base “c:\apache\htdocs\redmine” e para a versão do Rails, escolha a opção “3″:

    \ruby\bin\ruby script/plugin install http://svn.napcsweb.com/public/reverse_proxy_fix


2.Reinicie o serviço do Redmine pelo gerenciador de serviços do Windows.


Teste do Redmine pelo Proxy


1.Através do browser teste se o Redmine está no ar, sendo acessado pelo proxy configurado no Apache. Acesse o endereço “http:\\localhost\redmine\login”


Post Relacionados:
    Tutorial Redmine – Gráficos no Redmine usando a API do Google Charts

Referências:
    Serving Multiple Rails Applications on Windows with Apache and Mongrel
    Mongrel Win32 HOWTO

Post visualizado 7.592 vezes.

Rails &TI &Tutorial André Dourado on 16 dez 2008

WARR (Windows Apache Ruby Rails) – Tutorial de instalação

Por: André Dourado

Nota do autor: Antes de seguirem esse tutorial, recomendo que dêem uma olhada no tutorial “Tutorial de Instalação do Redmine em Ambiente Windows+Apache+Mongrel+MySQL“. A parte de instalação WARR está mais completa e atual. Basta não instalar os pacotes do Redmine.

Configurar o Ruby no Windows é bastante simples, porém adicionar Rails e fazer com que tudo funcione sob o Apache 2.x não é tão fácil, ou pelo menos não encontramos tão facilmente, documentação que descreva o processo como um todo. Este post tem a finalidade de descrever esse processo, passo a passo.

Requisitos


Windows XP SP2: este tutorial foi feito utilizando um XP SP2 previamente instalado. Provavelmente funcionará sem problemas em outras versões de Windows.

Apache Webserver 2.x: neste tutorial foi utilizada a versão “Win32 Binary without crypto (no mod_ssl) (MSI Installer)” que pode ser obtida no endereço: http://ftp.unicamp.br/pub/apache/httpd/binaries/win32/apache_2.2.11-win32-x86-no_ssl.msi

One-Click Ruby Installer: neste tutorial foi utilizada a versão “One-Click Ruby Installer 1.8.6-25″ que pode ser obtida no endereço: http://rubyforge.org/frs/download.php/18566/ruby186-25.exe

FastCGI: neste tutorial foi utilizada a versão “FastCGI 2.4.2″ que pode ser obtida no endereço: http://www.fastcgi.com/dist/mod_fastcgi-2.4.6-AP22.dll

Ruby for Apache: neste tutorial foi utilizada a versão “Ruby for Apache 1.3.1″ que pode ser obtida no endereço: http://rubyforge.org/frs/download.php/5256/RubyForApache-1.3.1.exe

Instalação do Apache Web Server


1.Execute o instalador do Apache Webserver, clicando sobre o arquivo “apache_2.2.11-win32-x86-no_ssl.msi” a partir do Windows Explorer. Clique então sobre o botão “Next”.

2.Selecione a opção “I accept the terms…” e clique sobre o botão “Next”.

3.Clique sobre o botão “Next”.

4.Informe os endereços solicitados e clique no botão “Next”.

5.Selecione a opção “Typical” e clique sobre o botão “Next”.

6.Clique sobre o botão “Change…” para alterar o caminho onde o servidor será instalado.

7.Informe o caminho desejado. Neste tutorial utilizamos o caminho “c:\apache”. Clique sobre o botão “Ok”.

8.Clique sobre o botão “Next”.

9.Clique sobre o botão “Install”.

10.Clique sobre o botão “Finish”.

11.Teste se o servidor foi instalado corretamente, digitando “http://localhost” no campo url do browser. Se tudo estiver ok, a tela apresentada será semelhante a tela abaixo:


Instalação do Ruby


1.Execute o instalador do Ruby, clicando sobre o arquivo “ruby186-25.exe” a partir do Windows Explorer. Clique então sobre o botão “Next”.

2.Clique sobre o botão “I Agree”.

3.Clique sobre o botão “Next”.

4.Informe o caminho desejado. Neste tutorial utilizamos o caminho “c:\ruby”. Clique sobre o botão “Next”.

5.Clique sobre o botão “Install”.

6.Clique sobre o botão “Next”.

7.Clique sobre o botão “Finish”.


Instalação do Rails


1.Os próximos passos serão executados em linha de comando do Windows, para isso clique no botão iniciar do Windows. Clique em “Executar” e na linha de comando digite “cmd” e pressione a tecla “Enter”.

2.Mude para o diretório “c:\ruby\bin” e digite o comando de atualização do gerenciador de pacotes do Ruby RubyGems: “gem update --system“. Essa operação leva alguns minutos e é necessário que você esteja conectado à internet.

3.Digite o comando de atualização e instalação do Rails: “gem install rails“. Essa operação leva alguns minutos e é necessário que você esteja conectado à internet. Se for solicitado sobre o que fazer em relação a dependências, pressione a tecla “Y” e em seguida a tecla “Enter”.


Instalação do RubyForApache


1.Renomeie o arquivo “mod_fastcgi-2.4.6-AP22.dll” para “mod_fastcgi.dll” e o copie para o diretório de módulos do Apache. Nesse tutorial o arquivo deve ser copiado para “c:\apache\modules”.

2.Renomeie o arquivo “c:\windows\system32\msvcp71.dll” para “c:\windows\system32\msvcp71.old”.

3.Execute o instalador do RubyForApache, clicando sobre o arquivo “RubyForApache-1.3.1.exe” a partir do Windows Explorer. Clique então sobre o botão “Next”.

4.Informe o diretório onde está instalado o Apache. Nesse tutorial o Apache está instalado no diretório “c:\apache”. Clique então sobre o botão “Next”.

5.Informe o diretório onde está instalado o Ruby. Nesse tutorial o Apache está instalado no diretório “c:\ruby”. Clique então sobre o botão “Next”.

6.Selecione apenas a opção “mod_fastcgi”. Clique então sobre o botão “Install”.

7.Clique sobre o botão “Close”.


Configuração do Apache


1.Edite o arquivo de configuração do Apache “c:\apache\conf\httpd.conf”. Faça as seguintes alterações:

  • Retire o comentário da linha “LoadModule rewrite_module modules/mod_rewrite.so”
  • Adicione a linha “LoadModule fastcgi_module modules/mod_fastcgi.dll” ao final da seção onde se encontram as demais linhas “LoadModule”

Crie uma aplicação de teste


1.Clique no botão iniciar do Windows. Clique em “Executar” e na linha de comando digite “cmd” e pressione a tecla “Enter”. Crie uma aplicação de teste no diretório de páginas do Apache, digitando o comando “rails c:\apache\htdocs\teste”

2.Crie ou edite o arquivo “c:\apache\htdocs\teste\public\.htaccess” com o seguinte conteúdo:

    RewriteEngine On
    RewriteBase /teste
    RewriteRule ^$ index.html [QSA]
    RewriteRule ^([^.]+)$ $1.html [QSA]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

3.Edite o arquivo de configuração do Apache “c:\apache\conf\httpd.conf”. Ao final do arquivo acrescente as linhas de configuração da aplicação de teste:

    Alias /teste “c:/apache/htdocs/teste/public”
    FastCgiServer c:/apache/htdocs/teste/public/dispatch.fcgi -idle-timeout 120 -initial-env RAILS_ENV=production -processes 1
    <Directory c:/apache/htdocs/teste/public>
      Options ExecCGI FollowSymlinks
      AllowOverride All
    </Directory>

4.Reinicie o Apache. Teste a aplicação pelo browser, colocando no endereço da url “http://localhost/teste”. Deverá ser carregada página semelhante a seguinte:

Referências:
    rawlinson.us – WARR Installation
    Fast CGI and Apache2 for Windows XP
    HowtoDeployMoreThanOneRailsAppOnOneMachine
    HowtoInstallOnWindows

Post visualizado 4.603 vezes.

Próxima Página »