Comment puis-je exécuter des scripts Ruby via Apache (sans nécessairement utiliser Rails)?

8

J'essaie d'obtenir qu'Apache interprète mes fichiers Ruby mais je ne comprends pas comment le faire. Je ne suis pas concerné par Rails en ce moment, seulement Ruby. Ce que j'ai trouvé par Google ne fait que me confondre. Aucun conseil?

Jason Swett
la source

Réponses:

3

La façon la plus courante d'exécuter du code ruby ​​dans un environnement de serveur Web est de demander au code d'implémenter une interface en rack. Il s'agit d'une API très simple qui permet au serveur Web de parler à votre application Ruby. Pour Apache, le gestionnaire de rack le plus courant est passager (alias. Mod_rails et mod_rack). Presque tous les frameworks web ruby ​​actuels (comme les rails, sinatra, camping, ...) se connectent au serveur web à l'aide d'un gestionnaire de rack. Vous pouvez utiliser l'un de ces cadres, mais vous pouvez également écrire des applications en rack directement sans celles-ci. Tous les serveurs d'applications ruby ​​(mongrel, thin, unicorn, rainbows, ...) implémentent l'interface rack.

Une autre alternative serait d'utiliser (f) cgi, mais je vous conseille de rester à l'écart de cette route, car l'interface et les protocoles sont maladroits et ne fournissent pas vraiment des installations de gestion modernes.

Holger Just
la source
2

Cela fait un moment que j'essaie de trouver la réponse simple à cette question, et j'ai compris que tout ce que vous avez à faire est de mettre le script ruby ​​dans le répertoire cgi-bin de votre serveur Web et de charger l'URL correspondante. Ainsi, par exemple, dans mon installation par défaut de CentOS 6.2 / httpd, j'ai mis un script appelé hello.rb dans / var / www / cgi-bin / puis chargé http: //localhost/cgi-bin/hello.rb dans mon navigateur et il a exécuté le script et m'a montré ce qui est allé à STDOUT (c'est-à-dire à partir de put, etc.).

Ce qui se passe ici, c'est à chaque fois que l'URL est chargée, le script s'exécute complètement. Ce n'est pas idéal pour un serveur Web à haut volume ou lorsque la vitesse est cruciale - donc quelque chose comme fastCGI maintient le script toujours en cours d'exécution, mais vous devez écrire le script pour gérer cela.

J'espère que cela pourra aider.

carillonateur
la source
1

Vous pouvez exécuter des scripts ruby ​​avec cgi rapide. Regardez le projet fcgi pour plus d'informations.

Vagmi Mudumbai
la source
0

Essayez Modruby .

alvosu
la source
Je l'ai essayé. Cela n'a rien fait et s'il y a des documents, ils ont fait un excellent travail pour les cacher.
Jason Swett
Cela n'a pas fonctionné non plus. Invalid command 'RubyAddPath'Est-ce une sorte de chose ésotérique que personne ne fait jamais? Je suis surpris de voir à quel point il est difficile de faire fonctionner Ruby avec Apache par rapport à PHP.
Jason Swett
Ajouter "LoadModule ruby_module" path_to_mod / mod_ruby.so "
alvosu
Ajout AddHandler ruby-object .rbx, LoadModule ruby_module /path/to/mod_ruby, RubyRequire apache/ruby-runet RubyHandler Apache::RubyRun.instanceà httpd.confdevrait être suffisant pour une configuration simple.
Chris S