Bagaimana saya bisa menjalankan skrip Ruby melalui Apache (tidak harus menggunakan Rails)?

8

Saya mencoba membuat Apache untuk menginterpretasikan file Ruby saya, tetapi saya tidak mengerti bagaimana cara melakukannya. Saya tidak peduli dengan Rails sekarang, hanya Ruby. Apa yang saya temukan dengan Googling hanya membingungkan saya. Ada saran?

Jason Swett
sumber

Jawaban:

3

Cara paling umum untuk menjalankan kode ruby ​​di lingkungan server web adalah dengan meminta kode tersebut mengimplementasikan antarmuka rak. Ini adalah API yang sangat sederhana yang memungkinkan server web untuk berbicara dengan aplikasi ruby ​​Anda. Untuk Apache, pengendali rak paling umum adalah penumpang (alias. Mod_rails dan mod_rack). Hampir semua kerangka web ruby ​​saat ini (seperti rel, sinatra, berkemah, ...) terhubung ke server web menggunakan pengendali rak. Anda dapat menggunakan salah satu kerangka kerja itu, tetapi Anda juga dapat menulis aplikasi rak langsung tanpa itu. Semua server aplikasi ruby ​​(mongrel, thin, unicorn, rainbows, ...) mengimplementasikan antarmuka rak.

Alternatif lain adalah menggunakan (f) cgi, tetapi saya menyarankan Anda untuk menjauh dari rute itu, karena antarmuka dan protokolnya canggung dan tidak benar-benar menyediakan fasilitas manajemen modern.

Holger Just
sumber
2

Saya sudah mencoba menemukan jawaban sederhana untuk pertanyaan ini untuk sementara waktu sekarang, dan menemukan semua yang harus Anda lakukan adalah meletakkan skrip ruby ​​di direktori cgi-bin server web Anda dan memuat URL yang sesuai. Jadi misalnya, dalam instalasi CentOS 6.2 / httpd default saya, saya meletakkan skrip yang disebut hello.rb di / var / www / cgi-bin / dan kemudian memuat http: //localhost/cgi-bin/hello.rb di my browser dan dieksekusi skrip dan menunjukkan kepada saya apa yang pergi ke STDOUT (yaitu dari put, dll).

Apa yang terjadi di sini adalah setiap kali URL dimuat, skrip berjalan sepenuhnya. Ini tidak ideal untuk server web volume tinggi atau di mana kecepatan sangat penting - jadi sesuatu seperti fastCGI membuat skrip tetap berjalan, tetapi Anda harus menulis skrip untuk mengatasinya.

berharap itu bisa membantu.

carillonator
sumber
1

Anda dapat menjalankan skrip ruby ​​dengan cgi cepat. Lihatlah proyek fcgi untuk informasi lebih lanjut.

Vagmi Mudumbai
sumber
0

Coba modruby .

alvosu
sumber
Saya mencobanya. Itu tidak melakukan apa-apa dan jika ada dokumentasi, mereka melakukan pekerjaan besar menyembunyikannya.
Jason Swett
Itu juga tidak berhasil. Invalid command 'RubyAddPath'Apakah ini semacam hal esoteris yang tidak pernah dilakukan siapa pun? Saya terkejut dengan betapa sulitnya membuat Ruby bekerja dengan Apache dibandingkan dengan PHP.
Jason Swett
Tambahkan "LoadModule ruby_module" path_to_mod / mod_ruby.so "
alvosu
Menambahkan AddHandler ruby-object .rbx, LoadModule ruby_module /path/to/mod_ruby, RubyRequire apache/ruby-run, dan RubyHandler Apache::RubyRun.instanceuntuk httpd.confharus cukup untuk konfigurasi yang sederhana.
Chris S