Ruby Rack e servidores Ruby - dúvida sobre funcionamento

29 views
Skip to first unread message

marco

unread,
Feb 10, 2011, 3:40:44 PM2/10/11
to ruby-sp
Olá!

Eu estive estudando um pouco o Racke tem uma coisa que ainda não
consegui entender...

Em um servidor PHP (XAMPP por exemplo), é só jogar um arquivo .php lá,
e ele vai funcionar.

Em Ruby isso não acontece, precisa usar uma camada miníma de aplicação
(que é a aplicação Rack) para poder executar qualquer coisa.

Alguém sabe explicar qual a diferença entre o servidor php e o
servidor ruby? Nesse aspecto PHP parece ser muito mais simples do que
ruby!

Até mais!

Vinícius Baggio Fuentes

unread,
Feb 11, 2011, 7:23:55 AM2/11/11
to rub...@googlegroups.com
Olá Marco!

Na verdade tem um pouco de confusão aí. Quando você instala o XAMPP, o pacote
instala o mod_php, que é um modulo do apache para executar PHP. Quando você
faz isso, o mod_php intercepta a conexão, processa o arquivo .php e devolve o 
resultado.

No Ruby você poderia fazer a mesma coisa com CGI, mas é bem ruim. 

O que o Rack faz na verdade é criar um protocolo, uma interface, para que
todos os middlewares compatíveis com Rack (como o Passenger, por exemplo)
possam interagir com qualquer framework web que saiba responder como o Rack propõe.
O pessoal de Python fez exatamente isso com o WSGI.

Isso melhora bastante a maneira de fazer deploy de aplicações mais complexas.

O que vou falar agora é achômetro, não tenho certeza, mas:
o mod_php só recebe o arquivo a ser processado e cospe o resultado, enquanto o
WSGI e o Rack cuidam até mesmo do roteamento. Dessa forma, você
nao precisa ter pastas que batem com o endereco, tipo no php.

- vinicius


2011/2/10 marco <marco...@gmail.com>

--
Você recebeu esta mensagem porque está inscrito no Grupo "ruby-sp" em
Grupos do Google.
Para postar neste grupo, envie um e-mail para rub...@googlegroups.com
Para cancelar a sua inscrição neste grupo, envie um e-mail para
ruby-sp+u...@googlegroups.com
Para ver mais opções, visite este grupo em
http://groups.google.com.br/group/ruby-sp?hl=pt-BR

Maurício Szabo

unread,
Feb 11, 2011, 7:25:39 AM2/11/11
to rub...@googlegroups.com
Bom, vamos lá:

PHP, jogando um arquivo lá dentro, ele roda APENAS se o servidor estiver com suporte a PHP. Se você compilar, por exemplo, o Apache sem suporte a PHP, ou não instalar os módulos PHP, não funciona.

Em ruby, existe o modruby, que embora desatualizado pode ser usado também para colocar arquivos .rhtml numa pasta, e eles funcionam como se fossem um arquivo ERB.

Tanto em PHP como em Ruby, é possível usar arquivos como se fossem CGI, colocando um arquivo executável numa pasta e pedindo para eles rodarem.

Tanto em PHP como em Ruby, Java, Python, é possível rodar páginas no formato de "servlet", que é exatamente o que o Rack faz: o Rack é uma abstração de um servlet Ruby.


Eu tenho alguns exemplos de uso de Ruby como se fosse PHP, usando o webrick para servir páginas .rhtml direto, mas não estou achando-os... se eu achar eu posto aqui :-D

Abraços!

2011/2/10 marco <marco...@gmail.com>
--
Você recebeu esta mensagem porque está inscrito no Grupo "ruby-sp" em
Grupos do Google.
Para postar neste grupo, envie um e-mail para rub...@googlegroups.com
Para cancelar a sua inscrição neste grupo, envie um e-mail para
ruby-sp+u...@googlegroups.com
Para ver mais opções, visite este grupo em
http://groups.google.com.br/group/ruby-sp?hl=pt-BR



--
A question that sometimes drives me hazy: am I or are the others crazy?

Any intelligent fool can make things bigger and more complex... It takes a touch of genius - and a lot of courage to move in the opposite direction.
(Albert Einstein)

It seems to me that measuring maturity is a very immature thing to do. Teens talk about their maturity, adults don't.
(Robert Martin)

Apenas peixes mortos nadam a favor da maré (Malcolm Muggeridge)

marco

unread,
Feb 11, 2011, 5:34:48 PM2/11/11
to ruby-sp
Ok, valeu pela força, pessoal,vou continuar pesquisando.

Mas servir ruby poderia ser mais simples, não acham?


On Feb 11, 10:25 am, Maurício Szabo <mauricio.sz...@gmail.com> wrote:

> Bom, vamos lá:
>
> PHP, jogando um arquivo lá dentro, ele roda APENAS se o servidor estiver com
> suporte a PHP. Se você compilar, por exemplo, o Apache sem suporte a PHP, ou
> não instalar os módulos PHP, não funciona.
>
> Em ruby, existe o modruby, que embora desatualizado pode ser usado também
> para colocar arquivos .rhtml numa pasta, e eles funcionam como se fossem um
> arquivo ERB.
>
> Tanto em PHP como em Ruby, é possível usar arquivos como se fossem CGI,
> colocando um arquivo executável numa pasta e pedindo para eles rodarem.
>
> Tanto em PHP como em Ruby, Java, Python, é possível rodar páginas no formato
> de "servlet", que é exatamente o que o Rack faz: o Rack é uma abstração de
> um servlet Ruby.
>
> Eu tenho alguns exemplos de uso de Ruby como se fosse PHP, usando o webrick
> para servir páginas .rhtml direto, mas não estou achando-os... se eu achar
> eu posto aqui :-D
>
> Abraços!
>
> 2011/2/10 marco <marcofog...@gmail.com>

Carlos Galdino

unread,
Feb 11, 2011, 7:29:10 PM2/11/11
to rub...@googlegroups.com
Quer algo mais simples que o Rack provê?

Com o Rack os frameworks e os servers não precisam se comunicar. Comunicam com o Rack e ele toma conta do resto.

Tem uma apresentação, achei um pouco fraca mas é bom pra pegar umas ideias básicas. http://mwrc2010.confreaks.com/2010-03-11-13-00-michael-j-i-jackson-rack-for-web-developers.html

--
Carlos Galdino

Maurício Szabo

unread,
Feb 11, 2011, 9:18:31 PM2/11/11
to rub...@googlegroups.com
Na prática, é mais simples que PHP:

#arquivo server.rb:
require "webrick"
server = WEBrick::HTTPServer.new(
  :Port => 8080,
  :MimeTypes => WEBrick::Config::HTTP[:MimeTypes].merge('rhtml' => 'text/html')
)
server.mount "/", WEBrick::HTTPServlet::FileHandler, "htdocs"
trap "INT" do
  server.stop
end
server.start


#arquivo htdocs/index.rhtml:
<%= "Hello, world!" %>


Rodar: ruby server.rb (vai abrir um servidor web. Bem mais fácil que PHP, você nem precisa instalar o Apache :D)

Apontar o browser pra http://localhost:8080.


....

Agora, falando sério, o acronimo original do PHP era "Personal Home Page", depois mudado pra "PHP Hypertext Preprocessor". Ou seja, originalmente, PHP já foi pensado em ser uma linguagem para fazer páginas. Já Ruby, foi pensado como uma linguagem mais genérica. Por isso, é mais fácil (pelo menos, aparentemente) pegar um script PHP e já colocá-lo na internet, enquanto que Ruby não é tão simples. Mas pense que Java, Perl, Python, também não são como PHP, que basta colocar um arquivo na pasta certa e tudo funciona.

Ou seja, o PHP que é o diferente, não o Ruby (rs).

Abraços!

2011/2/11 marco <marco...@gmail.com>

Jhonatan Rodrigues

unread,
Feb 11, 2011, 7:35:39 PM2/11/11
to rub...@googlegroups.com
É por que voce aprendeu de outra forma se aprendese desta iria
estranhar a outra Hehe

--
Att,

www.lugardosite.com.br

Jhonatan Rodrigues

Jhonatan Rodrigues

unread,
Feb 12, 2011, 10:57:43 AM2/12/11
to rub...@googlegroups.com
Falou Tudo =) È isso ahe

Hehe
Att,


Jhonatan Rodrigues

Reply all
Reply to author
Forward
0 new messages