Posts Tagged ‘puts’

Ruby usando DRb (Distributed Ruby)

Postado em 18 jun 2009
Categoria(s) Ruby

DRb permite programas em Ruby se comunicar uns com os outros na mesma máquina ou através de uma rede, aplicação cliente/servidor. DRb utiliza o método de invocação remota (RMI) para transmitir comandos e dados entre os processos.

Nesse post vamos criar dois programas, o servidor e o cliente usando DRb.

Construíndo o servidor (server.rb):

1
2
3
4
5
6
7
8
9
10
11
require 'drb'
 
class Server
  def hello
    "Hello, This is a Distributed Ruby (DRb) Example"
  end
end
 
server_object = Server.new
DRb.start_service('druby://localhost:9000', server_object)
DRb.thread.join

Entendendo o código do servidor:

require 'drb'

A linha acima apenas requere a biblioteca DRb, essa biblioteca que a responsável por fazer a comunicação remota. Você pode encontrar mais informações a seu respeito em: http://www.ruby-doc.org/stdlib/libdoc/drb/rdoc/index.html.

class Server
  def hello
    "Hello, This is a Distributed Ruby (DRb) Example"
  end
end

O código acima apena cria uma classe e o método hello, que imprime uma mensagem.

server_object = Server.new
DRb.start_service('druby://localhost:9000', server_object)
DRb.thread.join

Essas três linhas acima que fazem o servidor funcionar, a primeira linha apenas faz a instância da classe Server, a segunda linha inicia o serviço remoto no endereço druby://localhost:9000 disponibilizando o objeto server_object, a terceira linha inicia uma thread no servidor para aceitar requisições remotas.

Construíndo o cliente (client.rb):

1
2
3
4
5
6
require 'drb'
 
DRb.start_service
obj = DRbObject.new(nil, 'druby://localhost:9000')
 
puts obj.hello

Entendendo o código do cliente:

require 'drb'

A linha acima apenas requere a biblioteca DRb, essa biblioteca que a responsável por fazer a comunicação remota. Você pode encontrar mais informações a seu respeito em: http://www.ruby-doc.org/stdlib/libdoc/drb/rdoc/index.html.

DRb.start_service
obj = DRbObject.new(nil, 'druby://localhost:9000')

As suas linhas acima inicia o serviço remoto com o servidor, a primeira inicializa o serviço e a segunda estabelece conexão com o servidor no endereço druby://localhost:9000 obtendo o objeto Server.

puts obj.hello

Essa linha acima invoca o método hello do objeto remoto Server.

Rodando o servidor:

Para inicializar o servidor digite na linha de comando:

ruby server.rb

Não será exibida nenhuma mensagem, o servidor apenas ficará esperando novas requisições remotas.

Rodando o cliente:

ruby client.rb

Quando você rodar o cliente terá como retorno a mensagem:

Hello, This is a Distributed Ruby (DRb) Example

Pronto! Esse recurso é muito interessante. ;-)

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark

Ruby on Rails gerar intervalo entre duas datas

Postado em 29 jan 2009
Categoria(s) Ruby on Rails

Hoje eu precisei gerar um intervalo de datas, entre um data inicial e uma data final. Fiquei simplesmente impressionado como é fácil fazer isso no Ruby.

Eu queria gerar todas as datas entre ’2009-01-01′ e ’2009-01-20′, eu abri o IRB e fui aos testes, não é que deu certo de primeira:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
irb(main):001:0> range = '2009-01-01'..'2009-01-20'
=> "2009-01-01".."2009-01-20"
irb(main):002:0> range.each { |v| puts v }
2009-01-01
2009-01-02
2009-01-03
2009-01-04
2009-01-05
2009-01-06
2009-01-07
2009-01-08
2009-01-09
2009-01-10
2009-01-11
2009-01-12
2009-01-13
2009-01-14
2009-01-15
2009-01-16
2009-01-17
2009-01-18
2009-01-19
2009-01-20
=> "2009-01-01".."2009-01-20"
irb(main):003:0>

Resumindo:

Mando gerar um range:

1
range = '2009-01-01'..'2009-01-20'

No exemplo acima eu usei .. (dois pontos) isso faz com que a data final ’2009-01-20′ seja incluída, caso você não queira incluir a data final use … (três pontos).

Mando imprimir o range:

1
range.each { |d| puts d }

Como eu vivi tanto tempo sem conhecer o Ruby. ;-)

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark

Removendo \n de uma string lida do teclado em Ruby

Postado em 18 nov 2008
Categoria(s) Ruby

No artigo anterior eu expliquei como ler um valor do teclado: http://patrickespake.wordpress.com/2008/11/18/como-receber-dados-do-teclado-no-ruby/.

Esse programa tem um problema, se você tentar concatenar uma string depois da variável linguagem a string vai ficar em uma nova linha.

Isso aconteceu porque quando você digitou o valor no teclado pressionou a tecla “enter” desta forma foi adicionado um \n no final da string.

Existe um método de string chamado chomp, esse método remove o \n (caracter de nova linha).

Então vamos arrumar o nosso programa.

1
2
3
4
5
puts "Qual a sua linguagem de programação favorita?"
linguagem = gets
linguagem = linguagem.chomp
 
puts "Sua linguagem favorita é: " + linguagem + "."

Executando você terá o resultado:

1
2
3
4
patrick@espake:~/projetos/algoritmos$ ruby gets.rb
Qual a sua linguagem de programação favorita?
Ruby
Sua linguagem favorita é: Ruby.

Perceba que o caracter “.” no final não foi quebrado para uma nova linha, tudo isso graças ao método chomp.

Se você quiser pode chamar o método chomp no gets, funciona também.

1
linguagem = gets.chomp

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark

Como receber dados do teclado no Ruby

Postado em 18 nov 2008
Categoria(s) Ruby

Ruby é uma linguagem de programação fantástica e tudo na sua sintaxe foi pensando com muita inteligência e praticidade.

Vou explicar como obter valores do teclado, no final você vai dar risada com a simplicidade.

Crie um arquivo chamado gets.rb e adicione o seguinte conteúdo:

1
2
3
4
puts "Qual a sua linguagem de programação favorita?"
linguagem = gets
 
puts "Sua linguagem favorita é: " + linguagem

Agora execute:

1
ruby gets.rb

Você terá o seguinte resultado:

1
2
3
4
patrick@espake:~/projetos/algoritmos$ ruby gets.rb
Qual a sua linguagem de programação favorita?
Ruby
Sua linguagem favorita é: Ruby

Como funciona?

Simples! O comando:

1
linguagem = gets

lê o teclado e joga o valor para a variável linguagem. Pronto!

Por isso que eu adoro o Ruby, simples, rápido e inteligênte. ;-)

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark