Alex Florentino

KISS - Keep It Simple, Stupid
December 3rd, 2008

Deployment com Ruby On Rails - Capistrano

Como desenvolvedor sempre surge a tarefa do deployment, ou seja, colocar o seu trabalho para rodar, no mundo web existe várias formas de fazer isso,  exemplo se o site for em PHP, é comum a utilização de FTP, SFTP e RSYNC.  Por outro lado se for java(JSP e Servlet) essa pode não ser uma medida eficiente já que normalmente envolve parar e iniciar o tomcat.

Mas independente da tecnologia,  essa é uma terefa rotineira e repetitiva então é razoável automatiza-la, é comum nesse aspecto a utlização de shell scripts, .bat etc.

No mundo ruby on rails temos uma ferramenta muito boa para fazer isso é o : CAPISTRANO que automatiza essa tarefa, de forma muito elegante.

basicamente para utiliza-lo, você precisa seguir alguns passos básicos.

1. Instalar o capistrano atráves do GEM


gem install -y capistrano

2. Capification é basicamente criar alguns arquivos modelos no seu projeto Ruby On Rails , basta ir para raiz do seu projeto e digitar:


capify .

3. Algumas configurações basicas no arquivo config/deploy.rb


set :application, "seuprojeto"
set :repository,  "https://urlseurepositorio/svn"
set :deploy_to, "/pathnoseuservidor/#{application}"
set :user, "userssh"
role :app, "servidorapp"
role :web, "servidorapp"
role :db,  "servidorapp", :primary => true

Arquivo bem simples, e para quem já criou script de deploy na mão, é bem simples de entender.

4. Criar o arquivo script/spin, esse arquivo é que você colocar o comando para reiniciar sua aplicação no caso como eu uso Passenger, basta :


touch /pathyourproject/current/tmp/restart.txt

faça um commit das alterações.

5. Vamos criar a estrutura basica no nosso servidor


cap deploy:setup

6. E por último fazer um release


cap deploy:update //(copia os última versão do servidor de código fonte)
cap deploy:start //(faz o release, e se for caso reinicia a aplicação)

pronto em questões de minutos usando o Capistrano você automatiza o deployment do seu projeto,
eu já fiz shell script para fazer isso e também já usei o Apache Ant e digo uma coisa o
Capistrano é uma solução elegante para essa tarefa.

November 18th, 2008

Fazendo upload de arquivos grande com PHP

Caso em seu sistema PHP você precise fazer upload de arquivos grandes, antes de mais nada você precisa revisar sua configuração do PHP, e esteja certo de setar corretamenta os parâmetros :

upload_max_filesize = 50M
post_max_size = 50M

November 13th, 2008

ActiveRecord sem Rails

No mundo Ruby On Rails ja é comum a utilização do ActiveRecord o que pode não ser tão comum é a utilização do framework AR fora de uma aplicação Rails.

Exemplo no sistema que estou trabalhando preciso fazer alguns testes, e portanto sempre preciso apagar o banco de dados e carrega-lo com dados novamente, não queria fazer isso com os sql inserts, é ae que entra o ActiveRecord.


require 'rubygems'
require 'active_record'

ActiveRecord::Base.establish_connection({
:adapter => 'mysql', :database => 'database', :username => 'root', :password => '', :host => 'localhost'})

class Pessoa < ActiveRecord::Base
set_table_name "pessoa"
end

agora você já pode fazer algumas mágicas, exemplo :


irb -r ActiveRecordTest.rb

p = Pessoa.new

p.save

o que acontece é que você já é capaz de salvar dados no seu banco de dados, sem utilizar SQL.

Definitivamente ActiveRecord é muito prático!

November 4th, 2008

Horário de verão no ubuntu e php

Recentemente estou encontrando varios problemas com servidores linux(ubuntu) por causa do horário de verão, encontrei um problema também com php, ou seja, no console o comando date retorna uma data e no php a função date retorna outra data…

Nesse caso é melhor começar organizando as coisas primeiro , no console

1. tz-select

selecione a zona correta de sua região

2. apt-get install tz-brasil

esse programa tomará conta do horario de verão, irá se encarregar de mudar a hora no momento correto.

com esses comandos consegui fazer date do linux ser igual a função date do PHP.

dependendo da sua necessidade pode ser necessario reiniciar o apache, mysql etc.

boa sorte.

October 21st, 2008

Acertando a hora no Linux

Nessa época de horario de verão não é raro ter que acertar o horario das maquinas na mão, então para facilitar segue um exemplo do comando date:

date -s “10/21/2008 16:11″

fonte

October 20th, 2008

Servlet 3.0

Quem é acustomado em desenvolver Servlet, deve ficar atento pois a versão 3.0 da API, terá varias mudanças, a principal e mais conceitual é utilização de Annotations para criar suas servlets, olhando os exemplos na web, o esquema parece com Spring Mvc com annotations.

Sem dúvida essa alteração é um progresso, pois irá tornar mais simples o desenvolvimento das aplicações web, mais detalhes em An Introduction To Servlet 3.0 e na JSR.

October 17th, 2008

Editar o menu esquerdo(left side) do MediaWiki

Sempre que preciso adicionar um novo item no menu do Wiki da empresa, preciso pesquisar pois sempre esqueço como fazer, então vou colocar aqui, no meu blog, para ficar mais facil de encontrar :

basta acessar : index.php?title=MediaWiki:Sidebar

e alterar a página!

October 17th, 2008

Adicionando um serviço para ser inicializado no ubuntu

Quem já trabalhou com o Redhat deve se lembrar da ferramenta ntsysv para configurar inicialização de um serviço no startup da maquina, pois é, no ubuntu como que é ? depois de pesquisar um pouco no google descobri a resposta, por exemplo, vamos colocar o tomcat no startup :

1. criar um script que inicia o serviço no /etc/init.d

no caso criei um link para o startup.sh do tomcat

2. executar o comando

update-rc.d startup.sh defaults

que ira colocar uma entrada nos scripts de inicialização,

3. chmod +x startup.sh

e por último torna o script executavel.

fonte: http://ubuntu.wordpress.com/2005/09/07/adding-a-startup-script-to-be-run-at-bootup/

October 13th, 2008

Sendmail error ’stat=Data format error’

Esses dias estava fazendo uma manutenção de rotina em dos nossos servidores, quando me deparei com esse erro no sendmail, depois de muita pesquisa descobri que um dos motivos é que no arquivo /etc/host não tinha o nome da maquina , no formato: ip minhamaquina maquina.dominio maquina, então os emails estavam saindo como localhost, o que ocasionava a mensagem de erro: Sendmail error ’stat=Data format error’ , após alteração no arquivo /etc/host problema resolvido.

fonte : http://bbpress.org/forums/topic/email-problem-sendmail-error-statdata-format-error

October 1st, 2008

Kiss, Mantenha a coisa simples

Uma imagem vale mais que 1000 palavras :)

Simplicidade

Simplicidade é o que vale, gerar valor para o negocio e não fazer o desenvolver orgulhoso por saber um "monte de coisa tecnica" e "avançada"!