Lista Redes Wifi Script

Postado por Herminio em julho 21, 2010

Bem, hoje a tarde navegando em alguns blogs e um dos posts que me chamou atenção foi falando sobre o libnotify-bin e o outro era como melhorar o seu sinal wifi.
Bem resolvi criar um script ruby que lista as redes wifi que seu computador achou e um outro script bash que pega o retorno do arquivo ruby e exibe essa notificação.
Lembrar que precisa ter o ruby instalado, para isso digite no seu terminal shell:

~$ sudo apt-get install ruby-full libmysql-ruby librmagick-ruby build-essential libssl-dev libreadline6-dev zlib1g-dev libopenssl-ruby libyaml-ruby libzlib-ruby libxml2-dev autoconf curl bison

Logo após a instalação do ruby, instalar o libnotify-bin:

~$ sudo apt-get install libnotify-bin

Agora você pode salvar em sua maquina um arquivo chamado send.sh com o seguinte código:

#!/bin/bash

info=$(eval "$*" 2>/dev/null)
notify-send -t $((1000+300*`echo -n $info | wc -w`)) -u low -i /usr/share/icons/Humanity-Dark/devices/24/network-wireless.svg "$*" "$info" || exit 2

Agora o código ruby, salve o arquivo escaneadorwifi.rb:

redeswifi = `iwlist wlan0 scan`.split("\n")
arr_busca = %w[Channel: Frequency: Quality ESSID]
listawifi = []

redeswifi.each do |redewifi|
  arr_busca.each do |buscapalavra|
    listawifi < < "#{redewifi}".lstrip if /#{buscapalavra}/.match("#{redewifi}")
  end
end
puts "Lista das redes wi-fi encontradas:"
puts listawifi.reverse!

Pronto, feito isso basta abrir um terminal shell e digitar:

$ sh ~/Área\ de\ Trabalho/send.sh ruby ~/Área\ de\ Trabalho/escaneadorwifi.rb

E no canto superior direito irá aparecer uma imagem como está:
notity

RVM – The Ruby Version Manager

Postado por Herminio em julho 08, 2010

Instalando RVM
Agora vamos ver como usar o RVM e o que podemos fazer com ele. RVM funciona em todos os sistemas *nix, se você tem um Linux/MacOSX ou FreeBSD, abra seu console e vamos começar com a instalação do RVM. O caminho recomendado do próprio desenvolvedor da gem é instalá-lo a partir do repositório GitHub com o seguinte comando:

$ mkdir -p ~/.rvm/src/
$ cd ~/.rvm/src && rm -rf ./rvm/
$ git clone git://github.com/wayneeseguin/rvm.git
$ cd rvm
$ ./install

(Nota: é preciso que você tenha o git instalado, se você não tiver o git instalado então faça download em http://git-scm.com e instale o git de acordo com o seu sistema operacional). Então vamos para a próxima etapa.

Antes de iniciar a instalação do nosso rubies e gems, é garantindo que o nosso RVM está na ultima versão então digite o seguinte comando:

$ rvm update –head

Certifique-se de ler e seguir todas as instruções emitidas pela instalação da linha acima. Certifique-se de novo para ativar o RVM shells, colocando a linha:

'if [[ -s $HOME/.rvm/scripts/rvm ]] ; then source
$HOME/.rvm/scripts/rvm ; fi'

No final do arquivo em ~/.bash_profile e ~/.bashrc assegurar que não há uma linha que termina com ‘&& return‘ no seu ~/.bashrc.

Instalando rubies
Perfeito, agora temos a versão mais recente do RVM instalado. Agora, a parte que realmente precisamos para desenvolver nossas próprias aplicações com Ruby. Nós podemos escolher agora várias possibilidades dos interpretadores de ruby que desejar instalar. A mais comumente utilizada é a instalação de um nível de patch específico, que é o padrão. Vamos instalar três intérpretes ruby, especificando suas versões (MRI ruby é interpretador padrão):

$ rvm install 1.8.6,1.8.7,1.9.1

Depois de executar este comando (e esperar por um tempo, dependendo da velocidade da CPU e da largura de banda da rede) devemos ter três interpretadores ruby instalado para cada um deles a última versão do patch. RVM obtém os níveis de patch padrão que são especificado no RVM ‘key=value’ no arquivo ~/.rvm/config/db, estas definições podem ser substituídas pelo usuário em ~/.rvm/config/user.
Para ver os rubies instalados basta simplesmente digitar: rvm list ao qual devemos ver algo semelhante a:

rvm Rubies
ruby-1.8.6-p398 [ x86_64 ]
ruby-1.8.7-p249 [ x86_64 ]
ruby-1.9.1-p378 [ x86_64 ]
System Ruby
system [ ]

Selecionando Rubies
Se quisermos usar o Ruby 1.8.6, nós simplesmente podemos selecionar em nosso shell atual, digitando rvm 1.8.6. Podemos então verificar que versão od ruby está sendo utilizada, digitando ruby -v e também podemos verificar em qual ambiente está, digitando rvm info. RVM opera em uma base per-shell para este ambiente só está ativo para o shell atual, se abrir um novo shell, em seguida, estaremos de volta ao ambiente do sistema, o que nos traz para …

Definir um Ruby padrão
Se quisermos usar uma versão específica do ruby como padrão para todas as outras versões instaladas, digamos, por exemplo, 1.9.1, vamos definir o padrão digitando: rvm 1.9.1 –default. Então quando nos digitamos rvm list vemos agora:

rvm Rubies
ruby-1.8.6-p398 [ x86_64 ]
ruby-1.8.7-p249 [ x86_64 ]
=> ruby-1.9.1-p378 [ x86_64 ]
Default Ruby (for new shells)
ruby-1.9.1-p378 [ x86_64 ]
System Ruby
system [ ]

Agora toda vez que abrir um novo shell vamos encontrar ruby -v o RVM 1.9.1 instalado e a gem list e as gems que podem ser instaladas no interpretador do RVM 1.9.1.

Ruby Gems
Com isso agora podemos instalar gems, e os pequenos pacotes que tanto precisamos, a fim de produzir o nosso código magnífico! Depois de selecionar uma versão do ruby com rvm 1.9.1, podemos instalar gems usando gem install (aviso prévio, sem sudo!). RVM configura seu ambiente de tal forma que as gems instaladas em um diretório separado para cada interpretador Ruby distintas. Isto significa que devemos instalar as gems para cara interpretador Ruby instalado que queremos com as gems. RVM fornece uma maneira fácil de instalar uma única gem para vários interpretadores: rvm 1.8.6,1.8.7 gem install ruby-debug irá instalar ruby-debug para ambas 1.8.6 e 1.8.7, enquanto rvm 1.9.1 gem install ruby-debug19 irá instalar o ruby-debug19 só para o ruby RVM’s 1.9.1. Para instalar uma gem a todos os interpretadores simplesmente omitir os seletores: rvm gem install shoulda.

(não)sudo
É muito importante para deixar o hábito de usar ‘sudo‘ para instalar gems. Quando sudo gem install x é usado gem install X é executado como o usuário root com a instalação raiz do ambiente e não no ambiente RVM cuidadosamente construída.

Resumo
Este é um breve tutorial. Para maiores informações e documentação mais detalhada, visite o site do RVM (http://rvm.beginrescueend.com).

Créditos: http://railsmagazine.com/issues/6 page 31. RVM – The Ruby Version Manager by Markus Dreier.

RSpec – Objetos Mock com comportamento de Objetos Reais

Postado por Herminio em agosto 25, 2009

Objetos Mock com comportamento de Objetos Reais

RSpec permite que você adicione o comportamento de objetos reais para objetos fictícios, para que possa definir as expectativas de mensagens ocultas e método em qualquer objeto em seu sistema.

Uma utilização comum deste apoio é isolar exemplos do ActiveRecord e, portanto, o banco de dados em exemplos no Ruby on Rails.

    MyModel.should_receive(:find).with(id).and_return(@mock_model_instance)

Controlar o comportamento dos métodos da classe de nível (por exemplo, tendo-lhes que devolver um objeto fictício, em vez de uma instância real da classe modelo) permite-lhe descrever seus controllers e views de forma isolada a partir da lógica de ocorrência de classes do seu model. Isso significa que você pode mudar as regras de validação de um modelo, por exemplo, e de unidade que nos exemplos modelos sem afetar o tratamento e exemplos de exibição.

Isso também ajuda a manter o contexto do seu exemplo completamente em exibição (sem ter de olhar para fixtures/xyz.yml e ter que entender o que está acontecendo).

RSpec – Mocks and Stubs

Postado por Herminio em agosto 25, 2009

Mocks and Stubs

Objetos Mock são objetos de dublê que dão maior controle declarativa sobre o seu comportamento no cursor da execução de um exemplo. Definindo mensagens de expectativas e métodos stubs de objetos permite que você especifique uma simulação como um objeto colaborar/corresponder com os outros antes desses objetos existirem.

Você também pode usar objetos dublê para isolar os seus exemplos de serviços que são complexos para configurar ou caros demais para serem executados e assim pode manter seu conjunto de exemplos funcionando rapidamente.

RSpec possibilita ter objetos falsos, assim lhe permite criar objetos fictícios em seus exemplos de objetos mocks, tendo o mesmo comportamento de seus objetos existentes.

Criando um objeto fictício

Você cria um objeto mock com o método de simulação:

    my_mock = mock(name)

Isso cria uma nova simulação com esse name (uma string) e registra-lo. Quando terminar o exemplo, todas as simulações registradas são verificadas.

    my_mock = mock(name, stubs_and_options)

Como acima, mas permite que você defina valores de retorno mínimo para determinadas mensagens e opções à ajustar a simulação do comportamento. Atualmente a única opção suportada é a seguinte :null_object. Definir isso como verdade instrui a ironizar a ignorar (baixo consumo) qualquer mensagem que não foi dita para esperar e retornar-se.

    my_mock = mock("blah", :null_object => true)

Notas
Há muitos pontos de vista diferentes sobre o significado de mocks e stubs. Se você estiver interessado em aprender mais, aqui estão algumas leituras recomendadas:

• Mock Objects: http://www.mockobjects.com/
• Endo-Testing: http://www.mockobjects.com/files/endotesting.pdf
• Mock Roles, Not Objects: http://www.mockobjects.com/files/mockrolesnotobjects.pdf
• Test Double Patterns: http://xunitpatterns.com/Test%20Double%20Patterns.html
• Mocks aren’t stubs: http://www.martinfowler.com/articles/mocksArentStubs.html

RSpec – Expectativas

Postado por Herminio em agosto 25, 2009

Spec::Expectations e Spec::Matchers

Quando executa especificações do RSpec, que define #should e #should_not a
cada objeto do sistema. Esses métodos são a sua entrada para a magia do RSpec.

Veja Spec::Expectations e Spec::Matchers para mais informações.

RSpec – Exemplos de código executável

Postado por Herminio em agosto 24, 2009

Exemplos de código executável

RSpec fornece uma Domain Specific Language(DSL) com o qual você pode expressar exemplos executável do comportamento esperado de seu código.

Imagine que você estivesse falando com um cliente solicitando o software para o seu banco. Parte da conversa que bem poderia ser assim:

    Você: Descrever uma conta quando ela é criada pela primeira vez.
    Cliente: Ele deve ter um saldo de $0.

Veja como podemos expressar essa conversa de RSpec:

    describe Account, "when first created" do
    it "should have a balance of $0" do
        …
        end
    end

O describe() é um método que retorna uma classe ExampleGroup, que contém um conjunto de exemplos de um comportamento específico do sistema que pretende descrever.

O it() é um método que retorna uma instância da ExampleGroup em que esse exemplo é executado.

Quando você executar esse exemplo, RSpec pode fornecer um relatório como este:

    Conta, quando criada pela primeira vez
    - Deve ter um saldo de $0

before() e after()

Você pode usar before() e/ou after() para definir um código que é executado antes e depois de cada exemplo, ou apenas uma vez por exampleGroup:

    describe Thing do
      before(:all) do
            # Este é executado apenas uma única vez, antes de todos os exemplos
            # e antes de qualquer blocks before(:each)
      end

      before(:each) do
        # Este é executado antes de cada exemplo
      end

      before do
            # :each é o padrão, então este é o mesmo que before(:each)
      end

      it "should do stuff" do
            # deve fazer coisas
        …
      end

      it "should do more stuff" do
            # deve fazer mais coisas
        …
      end

      after(:each) do
        # isto é, após cada exemplo
      end

      after do
            # :each é o padrão, então este é o mesmo que after(:each)
      end

      after(:all) do
            # Este é executado apenas uma única vez depois de todos os exemplos
            # E depois de qualquer blocks after(:each)
      end
    end

Atenção: A utilização do before(:all) e after(:all) é desencorajada porque ela introduz dependências entre os exemplos. Mesmo assim, pode ser útil para operações se você sabe o que está fazendo.

Métodos Helper

Você pode escrever métodos helper(auxiliares) diretamente dentro de um Exemple Group:

    describe "…" do
      it "…" do
        helper_method
      end

      def helper_method
        …
      end
    end

Métodos Helper Reutilizáveis

Você pode incluir métodos helper em vários ExampleGroups, basta colocar dentro de um módulo e em seguida, incluindo um módulo em seu exampleGroup:

    module AccountExampleHelperMethods
      def helper_method
        …
      end
    end

    describe "A new account" do
      include AccountExampleHelperMethods
      before do
        @account = Account.new
      end

      it "should have a balance of $0" do
        helper_method
        @account.balance.should eql(Money.new(0, :dollars))
      end
    end

Exemplo Grupos Compartilhados

Você pode criar exemplo de grupos compartilhados e incluir os grupos em outros grupos.

Suponha que você tenha algum tipo de comportamento que se aplica a todas as edições do seu produto, grandes e pequenos.

Primeiro comportamento do fator de “compartilhamento”:

    shared_examples_for "all editions" do
      it "should behave like all editions" do
      end
    end

Então, quando você precisa definir o comportamento para as grandes e pequenas edições,
referência o comportamento compartilhado usando o método it_should_behave_like ()

    describe "SmallEdition" do
      it_should_behave_like "all editions"

      it "should also behave like a small edition" do
      end
    end

    describe "LargeEdition" do
      it_should_behave_like "all editions"

      it "should also behave like a large edition" do
      end
    end

it_should_behave_like irá procurar um ExampleGroup pela sua descrição, neste caso, “all editions”

Todas abaixo são incluídas em um grupo compartilhado:
* before(:all)
* before(:each)
* after(:each)
* after(:all)
* all included modules
* all methods

Exemplos de grupos compartilhados não podem extend(estender) as classes.

Vários exemplos grupos compartilhados pode ser referenciado em um grupo não compartilhado.

Exemplos de grupos compartilhados podem ser incluídos em outros grupos compartilhados:

    shared_examples_for "All Employees" do
      it "should be payable" do
        @employee.should respond_to(:calculate_pay)
      end
    end

    shared_examples_for "All Managers" do
      it_should_behave_like "All Employees"

      it "should be bonusable" do
        @employee.should respond_to(:apply_bonus)
      end
    end

    describe Officer do
      before(:each) do
        @employee = Officer.new
      end

      it_should_behave_like "All Managers"

      it "should be optionable" do
        @employee.should respond_to(:grant_options)
      end
    end


    $ spec officer_spec.rb
    Officer
    - should be payable
    - should be bonusable
    - should be optionable

Exemplos Pendentes

Há três formas de marcar um exemplo como “pendente”.
Deixar o bloco:

    it "should say foo"

A saída será dizer pendente (ainda não implementado).
Use o método pendente com nenhum bloco:

    it "should say foo" do
      pending("get the vocal chords working")
      subject.should say("foo")
    end

A saída será dizer PENDENTES (obter as cordas vocais de trabalho).
Use o método pendente com um bloco:

    it "should say foo" do
      pending("get the vocal chords working") do
        subject.should say("foo")
      end
    end

A saída será dizer PENDENTES (obter as cordas vocais de trabalho), e o exemplo falhará dizendo-lhe para que seja corrigido logo o bloco e não gera nenhum erro.

RSpec – O Inicio, como testar com rspec.

Postado por Herminio em agosto 24, 2009

Primeiramente vamos instalar Gem Spec.

$ gem install rspec

Agora vamos criar a nossa estrutura onde vamos trabalhar um exemplo simples.

$ mkdir bowling
$ cd bowling
$ mkdir spec
$ mkdir lib

Comece com um exemplo muito simples que expressa algum comportamento básico desejado.

# vamos criar um arquivo chamado bowling_spec.rb
# dentro pasta spec que criamos agora a pouco
require 'rubygems'
# o require a rubygems é para que eu possa
# chamadar a gem spec e testar minha aplicação.
require 'spec'
# e este require é do meu arquivo de boliche
# onde vou tentar validar seu código, com testes.
require 'lib/bowling'

# aqui é onde vamos descrever um boliche
describe Bowling do

    # vamos descrever um comportamento
    # deve ter 0 escore na calha do jogo
    it "should score 0 for gutter game" do
        # cria um novo objeto
        bowling = Bowling.new
        # passa o valor 0 pinos para o método hit
        20.times { bowling.hit(0) }
        # aqui ele diz: score deveria ser igual a 0
        bowling.score.should == 0
    end

end

Vamos executar o teste e vê-lo falhar.

$ spec spec/bowling_spec.rb --format specdoc
./spec/bowling_spec.rb:11: uninitialized constant Bowling

Agora, vamos escrever o código apenas o suficiente para fazê-lo passar.

# bowling - boliche

class Bowling

    def hit(pins)
    end

    def score
        0
    end

end

Execute o exemplo novamente e veja o teste passar.

$ spec spec/bowling_spec.rb --format specdoc

Bowling
- should score 0 for gutter game

Finished in 0.002854 seconds

1 example, 0 failures

Tomar medidas pequenas(baby-steps)
Não se apresse em escrever muito código. Em vez disso, adicionar outro exemplo, e deixá-lo guiar dizendo o que você tem que fazer a seguir. E não se esqueça de ter tempo para refatorar seu código antes que ele fique confuso. Você deve manter seu código limpo, a cada passo dado no seu caminho.

Rails: ActiveRecord::Validations para validar o formato e a veracidade dos e-mail 1

Postado por Herminio em agosto 20, 2009

Todos nós sabemos que o Rails tem validações prontas para serem utilizadas. Isso se dá ao fato da sua classe de herdar do ActiveRecord.

Uma maneira bastante utilizada é validar o formato de um email utilizando expressões regulares e tem o rubular para fazer testes desses matchers. Assim:

class Person < ActiveRecord::Base
    validates_format_of :email,
                        :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
end

Bem, com isso conseguimos nossa validação de um formato mas não está 100% perfeita, pois permite que o usuário possa digitar um email não valido passando apenas no format, por exemplo:

#
# email invalido pois não tem nenhum servidor de email que responda por gmail.com em vez de gmail.com
#
alguma_coisa@gmaio.com

Por isso iremos utilizar o plugin Email-Veracity. E vamos melhorar a nossa validação, basta ir na pagina do Email-Veracity e fazer o download do plugin para a pasta vendor/plugins/ no seu projeto.

require 'email_veracity'

class Person < ActiveRecord::Base
    validates_format_of :email,
                        :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i,
                        :if => :is_a_valid_email?

    def is_a_valid_email?
        address = EmailVeracity::Address.new("#{self.email}")
        address.valid?
    end
end

Bem, agora podemos verificar se é um email 100% validado, onde fazemos um require no modulo de email_veracity e incluimos um if no validates_format_of que faz uma chamada ao método is_a_valid_email? se esse método retorna true faz a validação se retorna false não valida, podemos notar que o método implicitamente da um return em address.valid? bem é isso espero que tenham gostado.

Variáveis no Ruby

Postado por Herminio em agosto 10, 2009

@Variáveis de Instância

Variáveis que começam com uma arroba são variáveis de instância.

@x
@y
@somente_o_maior_pedaco_de_bacon_que_eu_ja_vi
# são exemplos.

Estas variáveis são muito usadas para se definir atributos de alguma coisa. Por exemplo, você pode prover o Ruby com a largura da porta_da_frente criando a variável @largura dentro daquela porta_da_frente. Variáveis de instância são usadas para se definir características de um objeto em Ruby.

Pense no símbolo arroba (at) como significando atributo.

@@Variáveis de Classe

Variáveis que começam com duas arrobas são variáveis de classe.

@@@x@
@@@y@
@@@vou_pegar_seus_bacons_pedacudos_e_ensinar_uma_licao_a_voces_dois@
# são exemplos.

Variáveis de classe são usadas, também, para se definir atributos. Mas ao invés de definir um atributo a apenas um objeto no Ruby, variáveis de classe dão um atributo a vários objetos relacionados no Ruby. Se as variáveis de instância estipulam atributos para só uma porta_da_frente, então variáveis de classe estipulam atributos para tudo que for Porta.

Pense no prefixo da dupla arroba significando atribua a todos. Adicionalmente, você pode pensar em um esquadrão de AT-ATs do Guerra nas Estrelas, que são comandados pelo Ruby. Você muda uma variável de classe e não apenas uma muda, todas elas mudam.

$Variáveis Globais

Variáveis que começam com um cifrão são globais.

$x
$1
$pedacudo; $BAcOn_PeDAcUDo
# são exemplos.

A maioria das variáveis são temporárias por natureza. Algumas partes do seu programa são como casas. Você entra e elas têm suas próprias variáveis. Em um casa, você pode ter um pai que representa Archie, um caixeiro-viajante colecionador de esqueletos. Em outra casa, pai pode representar Peter, um domador de leões com grande apreço por flanela. Cada casa tem um sentido próprio para pai.

Com variáveis globais, você garante que a variável será a mesma em cada casinha. O sinal de cifrão é bem apropriado. Todo lar Americano respeita o valor do cifrão. Somos doidos pela coisa. Tente bater em qualquer porta na América e dê a eles dinheiro. Eu posso garantir que você não verá a mesma reação se bater em uma porta e oferecer Peter, um domador de leões com grande apreço por flanela.

Variáveis globais podem ser usadas em qualquer lugar no seu programa. Elas nunca saem da vista.

Bem e como eu sei quais são todas essas variáveis globais?

[herminio] ~$ ruby -e 'puts global_variables.sort'
$!
$"
$$
$&amp;
$'
$*
$+
$,
$-0
$-F
$-I
$-K
$-a
$-d
$-i
$-l
$-p
$-v
$-w
$.
$/
$0
$:
$;
$&lt; $= $&gt;
$?
$@
$DEBUG
$FILENAME
$KCODE
$LOADED_FEATURES
$LOAD_PATH
$PROGRAM_NAME
$SAFE
$VERBOSE
$\
$_
$`
$deferr
$defout
$stderr
$stdin
$stdout
$~

Creditos: Livro O Guia (comovente) de Ruby do Why.

Criando aplicação com uma determinada versão do Rails instalada em sua máquina 3

Postado por Herminio em maio 19, 2009

Aqui iremos vê como criar uma aplicação nova e informar qual versão do Rails iremos utilizar, dado que esteja mais de uma versão instalada em sua máquina. Bem digamos que eu tenha mais de uma versão do Rails instalada na minha maquina. Por exemplo a versão 2.3.2 e a 2.2.2 e eu quero criar uma nova app que venha a utilizar a versão 2.2.2. Como eu faço para dizer que ela vai utilizar a versão que eu gostaria que utiliza-se? É super simples basta utilizar assim:

Veja que no comando eu passo rails versão e o nome da minha aplicação se eu inverter a ordem para rails nome da aplicação e versão ele irá utilizar a versão mais atual do rails. E como eu sei que deu certo esse comando? Ou qual versão a minha aplicação está utilizando?

Bem, estou postando esse comando, porque uma vez eu precisei e passei algumas horas para resolver esse meu problema.

Compilando/Instalando o Ruby, Rails e RubyGems no Ubuntu. 1

Postado por Herminio em maio 07, 2009

Bem, irei mostra como instalar/compilar o ruby, rails e rubygems no ubuntu, sem usar os pacotes debian based, e instalando da fonte.

Escolhi a compilação aparti do instalador, para que ele fique otimizado para a minha distribuição, assim tendo um melhor desempenho.

Outro motivo de não utilizar o “apt-get -y install pacote” é pelo simples fato de que o patchlevel que contem no repositório é antigo em relação ao pacote mais atual com correções de bugs e otimizações. Então vamos iniciar a nossa instalação.

Pré-Requisitos
Bem os pacotes que seram instalados, há suas razões como por exemplo o OpenSSL, o ruby por sua vez usa para funções de criptografia, acesso a serviços web sobre SSL… enfim:

Instalando o Ruby

Primeiramente vamos fazer download da ultima versão 1.8.x do ruby. Então quando formos instalar o ruby vamos passar os caminhos dos pacotes que instalamos como OpenSSL, zlib readline, pois a maioria dos ambientes Rails fará uso deles. Faremos a instalação com o modo de super-usuário(root). Lembrando que em ftp://ftp.ruby-lang.org/pub/ruby/ você pode escolher qual versão quer instalar, basta continuar a seguir os passos, aqui vamos instalar a versão 1.8.7 patchlevel 160.

Por padrão, o ruby é instalado em /usr/local, mas um simples which ruby será mostrado o local da instalação. E um ruby -v irá mostrar a versão e o patchlevel do ruby instalado. No nosso caso ruby 1.8.7 (2008-08-11 patchlevel 160) [i686-linux]

Para se certificar de que todas as bibliotecas estão acessíveis a partir do Ruby, digite a seguinte linha no shell:
Se este comando só retornar a string instalacao_com_sucesso é porque está funcionando como deveria. Agora vamos colocar o auto-complete no irb.

Quando termina de carregar o irb tente digitar ‘Str‘ e dê tab se ele mostrar as opções é porque está funcionando o auto-complete.

Instalando o RubyGems

Uma vez que seu ambiente ruby estiver funcionando é hora de instalar o RubyGems. Vamos no site http://rubyforge.org/projects/rubygems/ e lá terá a lista da ultima versão do rubygems, clique em download e baixe a versão que termina com a compactação .tgz e a versão que estaremos utilizando é a 1.3.3, vamos instalar em modo super-usuário:
Novamente você pode utilizar o which gem e o gem -v e agora que temos o Ruby e o RubyGems instalados no Ubuntu, vamos adicionar nossas gems. Por exemplo:

Pronto âmbiente pronto para desenvolver aplicações Ruby e Rails. As demais instalações como banco de dados fica a seu criterio.

Minha Palestra no Primeiro Evento CearáOnRails’09

Postado por Herminio em abril 12, 2009

Minha Primeira Palestra no Primeiro Evento Ceará On Rails.
View more presentations from hidenowt.
Links Adicionais, Palestra-1
http://pt.wikipedia.org/wiki/Http
http://pt.wikipedia.org/wiki/Crud
http://pt.wikipedia.org/wiki/REST
http://weblog.rubyonrails.org/search?q=route
http://apidock.com/rails/ActionController/Routing/RouteSet
http://apidock.com/rails/ActionController/Routing
http://railscasts.com/episodes?search=route

Espero que gostem e aproveitem o material. Alguma duvida ou sugestão deixar comentários, grato!

Primeiro Encontro CearaOnRails Amanha 08-04-2009

Postado por Herminio em abril 07, 2009

Primeiro encontro CearáOnRails’09

CearáOnRails – Grupo de Usuários Ruby e Rails do Ceará

Websitehttp://www.cearaonrails.org

Lista de Discussãohttp://groups.google.com.br/group/cearaonrails

Local: Faculdade Christus.

Endereço: Campus Dom Luís, está situado na Avenida Dom Luís, 911, Bairro Aldeota, próximo ao Shopping Aldeota. Localização com o Google Maps.

Contato: (85) 8884.8466

Data: Dia 08/04/2009 [quarta-feira] das 19:00h as 22:00h no Auditório do primeiro andar.

Palestras

19:00 às 19:10 Abertura do Evento.

19:10 às 19:50 Palestra: Roteamento Rails de fora para dentro.
Resumo: Entender como é o funcionamento das rotas, como o rails trata as requisições http enviadas a ele por interação de request/response E se há rotas mapeadas no sistema e finalmente como melhor utilizá-las, se tornando url’s intuitivas.
Palestrante: Hermínio Torres – Ccoordenador/Membro do grupo CearáOnRails e Programador Ruby.

19:50 às 20:40 Palestra: Gerência de Projetos com Scrum.
Resumo: O Scrum é uma das metodologias de gerência de projetos. O que é Scrum? Os papéis no Scrum. O conceito de Sprint. Product Backlog. Sprint Planning Meeting. Scrum Daily Meeting. Sprint Review. Sprint Retrospective.
Palestrante: Liliana Pedrosa Pinheiro Carrhá – Analista de sistemas, especialista em Engenharia de Software. Atuação na coordenação de projetos de desenvolvimento e suporte a soluções com foco em melhoria de processo em desenvolvimento, implantação e treinamento de projetos. Conhecimentos adquiridos: UML, RUP, Scrum, Gerência de Projetos, MPS.Br, CMMI, Java, SQL Server, MySQL, ITIL e Redes.

20:40 às 21:00 Pausa do Evento(Coffe-Break).

21:00 às 21:50 Palestra: Cloud On Rails.
Resumo: Conhecer como anda o mercado europeu e uma startup que utiliza programação em nuvem onde a idéia é ser algo similar ao twitter onde você pode seguir, adicionar amigos e dizer quem pode visualizar a suas musicas.
Palestrante: Hannes Tydén – Programador Ruby e Membro do Ruby User Group Berlin, Developer Startup SoundCloud.

21:50 às 22:00 Fechamento do Evento.

Rails para upload de arquivos e imagens usando o plugin paperclip 2

Postado por Herminio em março 24, 2009

Bem, irei mostrar como fazer upload de arquivos utilizando o paperclip e poderemos notar como é super simples de utilizar. Se o arquivo for imagem iremos precisar do imagemagick instalado na maquina onde irá ficar sua aplicação, pois o plugin utiliza o imagemagick para mexer com imagens.

Para o download do paperclip existe duas maneiras. Uma é baixando pelo próprio rails e a outra é indo no site e fazendo o download e descompactando na sua aplicação.

O paperclip por sua vez requerer algumas colunas no modelo para que seja necessário o seu funcionamento. E quais são elas?

Pois bem, digamos que na sua aplicação exista o modelo user, onde cada user contem uma imagem que é o seu avatar.  Podemos fazer o seguinte:

Agora iremos trabalhar o paperclip a nível de model. Vamos colocar toda a nossa regra de negocio e veremos como o sistema deverá tratar o upload de arquivos.

Bem não iremos fazer nenhuma modificação nos controllers. Então vamos partir para as views e finalizar o nosso tutorial.

Primeiramente vamos criar um partial, onde essa view será comum tanto para as telas de new.html.erb como edit.html.erb. Em sua aplicação vá até SUA_APLICAÇÂO/app/view/users/ e crie um arquivo chamado _user.html.erb e veja como será o código desse arquivo.

Agora, que temos o partial _user.html.erb precisamos adaptar as telas de edit.html.erb e new.html.erb então vamos seguir o seguinte código:

E nas views index.html.erb e show.html.erb iremos fazer a chamada da imagem.

Finalmente terminamos o nosso objetivo de fazer com que a nossa aplicação faça upload de arquivos. E caso você queira saber mais sobre o paperclip basta acessar a sua Documentação/RDoc ou entrar na lista de discussão do paperclip. É isso pessoal espero que tenham gostado.