Como posso executar scripts Ruby via Apache (não necessariamente usando Rails)?


8

Estou tentando fazer o Apache interpretar meus arquivos Ruby, mas não entendo como fazê-lo. Não estou preocupado com Rails agora, apenas Ruby. O que encontrei no Google apenas me confunde. Algum conselho?

Respostas:


3

A maneira mais comum de executar código ruby ​​em um ambiente de servidor da web é fazer com que o código implemente uma interface de rack. É uma API muito simples que permite ao servidor da web falar com seu aplicativo ruby. Para o Apache, o manipulador de rack mais comum é o passageiro (também conhecido como mod_rails e mod_rack). Quase todas as estruturas web ruby ​​atuais (como rails, sinatra, camping, ...) se conectam ao servidor web usando um manipulador de rack. Você pode usar uma dessas estruturas, mas também pode escrever aplicativos em rack diretamente sem elas. Todos os servidores de aplicativos ruby ​​(híbrido, magro, unicórnio, arco-íris, ...) implementam a interface do rack.

Outra alternativa seria usar o (f) cgi, mas eu aconselho você a ficar longe dessa rota, pois a interface e os protocolos são estranhos e realmente não fornecem instalações de gerenciamento modernas.


2

Eu tenho tentado encontrar a resposta simples para esta pergunta há algum tempo e descobri que tudo o que você precisa fazer é colocar o script ruby ​​no diretório cgi-bin do servidor da web e carregar a URL correspondente. Por exemplo, em minha instalação padrão do CentOS 6.2 / httpd, coloquei um script chamado hello.rb em / var / www / cgi-bin / e carreguei http: //localhost/cgi-bin/hello.rb no meu navegador e ele executou o script e me mostrou o que foi para STDOUT (ou seja, de putas, etc).

O que acontece aqui é sempre que a URL é carregada, o script é executado completamente. Isso não é ideal para um servidor da web de alto volume ou onde a velocidade é crucial - portanto, algo como o fastCGI mantém o script sempre em execução, mas você precisa escrevê-lo para lidar com isso.

espero que ajude.



0

Tente modruby .


Eu tentei. Não fez nada e, se houver alguma documentação, eles fizeram um ótimo trabalho de escondê-la.
Jason Swett


Isso também não funcionou. Invalid command 'RubyAddPath'Isso é algum tipo de coisa esotérica que ninguém faz? Estou surpreso com a dificuldade de Ruby trabalhar com o Apache em comparação com o PHP.
Jason Swett

Adicione "loadModule ruby_module" path_to_mod / mod_ruby.so "
alvosu

Adicionando AddHandler ruby-object .rbx, LoadModule ruby_module /path/to/mod_ruby, RubyRequire apache/ruby-run, e RubyHandler Apache::RubyRun.instancepara httpd.confdeve ser suficiente para uma configuração simples.
Chris S
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.