Ruby on Rails: Modificando tela de acesso negado Acl9

Post rápido hoje. Quando implementamos o acl9 para gerenciar 'roles' no sistema nos deparamos com a tela abaixo quando usamos um usuário sem permissão para executar uma ação dentro do sistema.



Para resolver isso é muito simples.
Basta adicionar o codigo abaixo no /controllers/application_controler.rb:

rescue_from 'Acl9::AccessDenied', :with => :negar_acesso

def negar_acesso
if current_user
render :template => 'acesso_negado'
else
flash[:notice] = 'Acesso negado. Você precisa estar logado.'
redirect_to login_path
end
end

Agora basta criar o arquivo acesso_negado.html.erb na raiz das views (/view/acesso_negado.html.erb) e adicionar uma mensagem de erro personalizada.

Até! Leia Mais!

Como instalar JRE no Linux


Olá, esse vai ser o meu primeiro post aqui no Blog, mas com certeza será o primeiro de muitos outros.

Essa dúvida pode parecer banal para muitos, mas sei também que para muitos outros, principalmente usuários que migraram para Linux recentemente, é muito útil.

A instalação do java serve para realizar a execução de applets, como por exemplo o Teclado Virtual do Banco do Brasil, que é utilizado para acessar sua conta no Internet Bank.

Siga os passos abaixo para realizar a instalação do JRE:

Abra o terminal e como usuário root e rode os seguintes comandos:

#apt-get install sun-java6-jre
Depois de baixados os pacotes do jre execute:

#apt-get install sun-java6-plugin
#apt-get -f install
Depois de rodar os comandos acima, reinicie o Firefox e o Java JRE estará funcionando. Leia Mais!

Github.com, o que é? como usar?


Olá pessoal, estava sem tempo para novos posts nas duas semanas que passaram! Obrigado pelas visitas que o blog tem tido! Vamos ao que interessa:

Primeiramente, você sabe o que é git? Se não sabe aconselho a ler o tutorial sobre git do Fabio Akita.

Github.com, o que é?

Github.com é um website feito em RoR que hospeda repositórios git. No plano gratuito seu projeto será publico, e no plano pago existe a possibilidade do projeto ficar no modo private. Ao colocar seu projeto no github, todos poderão olhar seu codigo, colaborar para a melhoria do mesmo, formando uma rede "Social Coding", de modo grosseiro um "Orkut" dos webdevelopers.
O projeto do framework Rails está hospedado lá, e qualquer um pode ver.

Como usar?

Vamos listar passos para conseguirmos hospedar um projeto git contendo um arquivo texto no Github.

  • Criar um conta no Github.com
  • Iniciar um novo projeto no Github.com
  • Adicionar permissões com public key ssh
  • Criar e configurar o projeto localmente usando git
  • Efetuar o primeiro commit e em seguida o push para o Github.com
Iniciar um novo projeto

Feito o primeiro login, vá no link Create a new repository.
Preencha as informações referentes ao seu novo projeto.


Adiocionar chave public no Github

Para este passo precisamos gerar primeiramente uma chave public em seu linux.
Execute o comando no terminal:

$ ssh-keygen -t rsa

Aperte enter em todas as perguntas sem especificar nada.
Após isto copie o conteúdo do arquivo ~/.ssh/id_pub.rsa

$ cat ~/.ssh/id_pub.rsa


Vá no link Account.
Clique no
add another public key e cole o conteúdo do id_pub.rsa copiado no passo acima no espaço.

Para testar execute no terminal o seguinte comando:
$ ssh git@github.com

Se der certo você vai ver uma menssagem de boas vindas.

Criar e configurar o projeto local

Crie uma pasta
$ mkdir projeto


Crie um arquivo teste dentro da pasta
$ cd projeto
$ echo Aprendendo a usar Github.com > README


Inicie um projeto git e adicione o arquivo
$ git init
$ git add README

Efetuar o primeiro commit e push

Primeiro commit
$ git commit -a -m "Primeiro commit"


Informando o endereço do seu repositório no GitHub.com
$ git remote add origin git@github.com:seu-usuario-no-Github/nome-do-projeto-criado.git


Exemplo:
$ git remote add origin git@github.com:jcmaciel/Sysobras.git


Primeiro Push
$ git push origin master


Até! Leia Mais!

Ruby on Rails: Implementando AutoFill com Jquery




Olá pessoal, hoje vou compartilhar um método que pode ser bobo para usuários avançados mais acho interessante por quase não existir material na internet.
Precisei desenvolver esse script para implementar uma função autofill em um sistema que desenvolvo para UENF (Universidade Estadual Norte Fluminense).

Todo mundo já usou sites com preenchimento automatico de campos.
Exemplo clássico deste recurso é quando se coloca o CEP em um formulário de endereço, e os campos contendo rua, bairro, cidade, são automaticamente preenchidos (AutoFill).

Neste exemplo uso a biblioteca JavaScript Jquery.

Vamos lá:

Criando uma aplicação teste em Ruby on Rails

Começamos criando uma aplicação "teste" para implementar o autofill.

$ rails autofill -d postgresql


* perceba que eu uso o postgresql como banco de dados, use o banco que esteja acostumado

Feito isso vamos geral um scaffold rapidamente.

$ cd autofill
$ script/generate scaffold Cadastro nome:string telefone:string email:string


Criar banco de dados e rodar a migração
Abra o arquivo config/database.yml e altere os dados de login do seu banco de dados.
Depois disso execute os comandos:

$ rake db:create
$ rake db:migrate


Com essa parte pronta podemos começar a implementar.

Abrindo a view new.html.erb (apps/views/cadastros/new.html.erb)
Insira o trecho abaixo antes da tag <% form_for(@cadastro) do |f| %>

Trecho:
<button id="autofill" name="autofill">Autofill?</button>
<div id="pegardados_autofill" style="display: none;">

<br>ID: <input id="id_autofill" name="id_autofill"> </input>
<button id="load_autofill" name="load_autofill">carregar</button>
</div>
<div id="msg_autofill" style="display: none;">
</div>

Screenshot:


Ajustando o controller (apps/controllers/cadastros_controller.rb)
Como este é apenas um exemplo e normalmente em exemplos temos que simular uma fonte de dados para fazer o autofill, vamos pegar dados do próprio cadastro, integrando com JSON.
Muito simples.

No controller ative o formato JSON no método show:

def show
@cadastro = Cadastro.find(params[:id])

respond_to do |format|
format.html # show.html.erb
format.xml { render :xml => @cadastro }
format.json { render :json => @cadastro } // ADICIONE ESTA LINHA
end
end


Baixando Jquery e criando o arquivo autofill.js

Se você não tem jquery em sua aplicação faça isto:
Baixe o arquivo jquery-1.3.2.js e coloque na pasta da sua aplicação rails
$ mv jquery-1.3.2.js /pathdasuaaplicação/public/javascripts/jquery-1.3.2.js


Crie dentro desta mesma pasta (../public/javascripts/) um arquivo com nome autofill.js e coloque o seguinte conteudo:

$(function(){ // FUNÇÃO PARA EXIBIR A DIV
$("#autofill")
.click(function(){
$("#pegardados_autofill").show(1300);

});
});

$(function(){
$("#load_autofill")
.click(function(){
var id = $('#id_autofill').val();
if(id == ""){
alert("Campo em branco, coloque o id.")
}
$.getJSON("http://localhost:3000/cadastros/" + id + ".json", function(data){ //pegando dados via JSON

$('#cadastro_nome').val(data.cadastro.nome);// completando os campos
$('#cadastro_telefone').val(data.cadastro.local);
$('#cadastro_email').val(data.cadastro.preco);

$("#msg_autofill").html("Dados carregados com sucesso..");

$("#msg_autofill").show(1100);
$("#msg_autofill").fadeOut(1800);

});
});
})


Finalizando
Seguindo todos esses passos, resta somente colocar a biblioteca no arquivo new.html.erb e o autofill.js

Abra new.html.erb e adicione antes da tag <h1>....</h1>

<%= javascript_include_tag 'jquery' %>
<%= javascript_include_tag 'autofill' %>


Salve e rode o servidor

$ script/server


Testando

Como não temos nenhum cadastro, consequentemente não temos da onde efetuar o autofill.
Efetue um cadastro então:
http://localhost:3000/cadastros/new

Não clique no botão AutoFill? por enquanto, apenas preencha os campos com nome telefone e email.
Com o cadastro efetuado já temos o primeiro ID para testar o auto fill.

Retorne ao endereço http://localhost:3000/cadastros/new e agora sim clique no botão Autofill?
Uma div com efeito deverá surgir e no campos ID: coloque o id 1 , clique em carregar e veja o resultado!



Com esse exemplo acho que da para adaptar em qualquer situação.
depois posto a função usando XML como padrão de dados.

Até! Leia Mais!

Livros: Startup + A cabeça de Steve Jobs


Olá pessoal, agradeço muito as visitas que o blog JCMaciel.com teve nos últimos dias.

Post rápido hoje.


Recentemente adquiri um box contento dois livro, Startup e A cabeça de Steve Jobs, da editora Agir, em uma excelente promoção do submarino.

Comecei a ler primeiro o Startup, um livro que conta a história das principais startup's do vale do silício em formato de entrevista.
Como tenho certa aptidão pelo lado do empreendedorismo, sou suspeito de falar sobre o livro.

Uma leitura não direcionada somente para o lado dos negócios como também para tecnologia. Você que é da área de T.I, ou qualquer outra área e tem vontade de entender como surgiram as ideias e que nem tudo são flores quando se começa um projeto de sucesso, está obra é extremamente recomendada.

Agora, vou iniciar a leitura da obra, A cabeça de Steve Jobs, uma biografia que mostra o trajeto de sucesso do empresário Steve Jobs, co-fundador da Apple.
Mais para frente farei uma resenha sobre ele quando acabar a leitura :-)

Edit¹: Se você leu o "Startup" e gostou, leia a versão original em inglês, "Founders at Work". Neste exemplar existem entrevistas não publicadas na versão em pt-BR.
Dica via twitter do @dvdoliveira

Link para o produto
Leia Mais!

Ambiente de Desenvolvimento Rails: Gedit + Gmate


Fala pessoal!!
Como todo programador Rails desmonetizado sonha em usar o Textmate (eu) trago uma solução bem fácil e extremamente explicada: um plugin para Gedit que aproxima-o do Textmate, o Gmate.
Com ele seu Gedit terá:
  • Console Embutido com possibilidade de varios terminais
  • Navegador de arquivos
  • Rails Hot Commands
  • Rails Hot Keys
  • Snapopen - abre arquivos rapidamente alá Textmate
  • TodoList
  • Bookmarks
  • Autocompletation
  • Syntax Highlight
  • E mais que eu posso estar esquecendo (#badblock)

Preview:


Instalação

$ sudo apt-get install gedit-plugins
Instalar gmate

$ git clone git://github.com/lexrupy/gmate.git

se aparecer git: command not found digite:

$ sudo apt-get install git-core
Extra:
Se você não tiver o git e não quiser instalar (programador rails geralmente precisa do git :] ) baixe o .deb http://cloud.github.com/downloads/lexrupy/gmate/gedit-gmate_0.9-ubuntu1_all.deb (somente para distros baseadas no debian) / baixe o tar.gz e descompacte http://juquinhaa.googlepages.com/gmate.taz.gz

# sanar as dependencias com esse comando:
$ sudo apt-get install python-pyinotify python-webkitgtk
# entre no diretorio
$ cd gmate
# instale
$ sh install.sh

Baixando o mterminal (Terminal embutido)
http://fazibear.googlepages.com/mterminal.tar.gz
Descompacte e copie os arquivos para a pasta /usr/lib/gedit-2/plugins/

Ativando e Configurando

Abra o Gedit e vá em Editar>Preferências>Plug-ins
Marque:
  • Advanced Bookmarks
  • Align
  • Auto Completation Plugin
  • Embedded Terminal
  • Gemini
  • HTML Tidy
  • Painel do navegador de arquivos
  • Quick Highlight Mode
  • Rails Extract partial
  • Rails File Loader
  • Rails Hot Commands
  • Rails HotKeys
  • Smart Ident
  • Snap open
  • TODO List
  • Trechos
  • Word completion

na aba Fontes e Cores escolha um tema que mais lhe agradar visualmente.

Para ativar o terminal aperte CTRL + F9
Para ativar o painel de navegação de arquivos use F9

Breve resumo das funcionalidades

Snap Open
Uso: CTRL + ALT + O
Abre arquivos rapidamente.
Rails HotKeys
Uso: CTRL + SHIFT + R e aperte logo em seguida F1. A lista com todos os comandos se abrirá.
CTRL + SHIFT + R e logo em seguida N abre o browser com endereço: http://localhost:3000/
Rails Hot Commands
Uso: CTRL + ALT + C e digite script. Logo abaixo uma lista vai aparecer contendo os comandos disponiveis.
Digite algum comando para executar rapidamente.
TODO List
Uso: CTRL + ALT + T abre uma janela contendo as tarefas a serem efetuadas, completas e etc.
Para usar basta em algum arquivo do projeto comentar assim:
Ex:
#TODO: lembrar aqui de implementar uma função tal.
Esse arquivo será listado na janela dos afazeres (CTRL + ALT + T)
Links:

Boa produtividade!
Até! Leia Mais!

Começando a programar: Ruby on Rails


Olá, interrompendo a seção de erros (afinal, as férias extendidas pela gripe suína servem para diminuir os erros encontrados :P), vou listar a seguir alguns tutoriais, link's da comunidade RoR (1º passo - acostume-se com o RoR, Ruby on Rails) e alguns pdfs que encontrei por ai!
Se você está lendo algo sobre RoR pela primeira vez aqui no blog certamente vai ler artigos onde todos indicam começar estudando a linguagem Ruby. Esse estudo é indicado digamos na segunda parte da programação com RoR, pois é nela que você pode precisar de coisas específicas e ai não tem jeito de usar automatizadores de códigos (scaffolds). Chega de papo, mas lembre-se de não sair por ai falando que está programando em uma linguagem nova "Ruby on Rails", pois Ruby é a linguagem e Rails é o framework utilizado!

Sobre o Ruby
Sobre o Rails
Livros
Blogs

Isso é um bom começo para iniciar no mundo RoR. Erros? Procure no blog!
Se você tem algum link e queira compartilhar, poste no comentário que eu junto na lista. Leia Mais!