Как запустить простой ruby script на любом веб-сервере (Apache или Mongrel или что-то еще)
Мне кажется очень смешно, что, когда я ищу что-то связанное с рубином, все рубины на рельсах связаны с результатами. Так никто больше не использует сырой рубин?
Однако я новичок в рубине. Сегодня утром я просто пытался запустить простой мир рубинов script на веб-сервере, сначала apache 2, а затем попробовал дворняжку. Но, к сожалению, я провалился. Я googled каждый путь, я могу, но результат показывает только рубин на рельсах. Так что действительно есть способ запустить ruby script на любом веб-сервере, или мне нужно использовать ror, даже если я просто хочу сделать приветственное приложение мира?
Ответы
Ответ 1
Sinatra, вероятно, лучше всего подходит для запуска Ruby script с веб-сервера без Rails.
Посмотрите здесь: http://www.sinatrarb.com
Из документов Sinatra:
require 'sinatra'
get '/hi' do
"Hello World!"
end
Затем просто запустите:
$ gem install sinatra
$ ruby -rubygems hi.rb
== Sinatra has taken the stage ...
>> Listening on 0.0.0.0:4567
Просто перейдите в http://0.0.0.0:4567 в свой браузер, и вы должны найти свой "Hello World"
...
Чтобы добавить к этому, так как вы также спрашиваете о запуске в Apache или других веб-серверах, вы можете проверить эти руководства о развертывании вашего нового приложения на основе Sinatra в Apache или Nginx:
Apache: http://www.pastbedti.me/2009/11/deploying-a-sinatra-app-with-apache-and-phusion-passenger-a-k-a-mod_rack/ и http://www.giantflyingsaucer.com/blog/?p=1716
Nginx: http://tommy.chheng.com/2009/06/09/deploying-a-sinatra-app-on-nginx-passenger-with-capistrano-and-git/
Обратите внимание, что оба учебника охватывают запуск Sinatra через Passenger (http://www.modrails.com/ - не откладывайте имя "modrails":)), с которым мне повезло в развертывании приложений под Apache и Nginx.
Ответ 2
Вы можете настроить Apache (например) для запуска файлов .rb как скрипты CGI, а затем добавить строку shebang (#!/path/to/your/ruby
или, возможно, #!/usr/bin/env ruby
) вверху script. Однако это не оптимально, так как он запускает новый интерпретатор для каждого запроса.
Ответ 3
Чаще всего используется рубиновый веб-сайт: http://www.modrails.com/
Это не очень сложно установить, и вы используете, вот он doc для apache: http://www.modrails.com/documentation/Users%20guide%20Apache.html#_deploying_a_ruby_on_rails_application
Ваше приложение должно быть действительным приложением стойки, вот минимальный мир привет (скажем,/app - ваша корневая папка вашего приложения):
/app/config.ru
require 'rack'
require 'app'
run(app)
/app/app.rb
app = proc do |env|
[
# http status code
200,
# headers
{'Content-Type' => 'text/html'},
# html body
["<head><title>Test Page</title></head><body>Hello World !</body>"]
]
end
Сохраните вышеприведенные файлы и создайте вложенную папку/приложение/публикацию (требуемую пассажиром для обнаружения приложения ruby /rails/sinatra) и используйте /app/public как DocumentRoot в вашей конфигурации apache.
Это может показаться страшным, но это для производственного развертывания, в разработке вы действительно не хотите общаться с реальным сервером.
Все, что вам нужно для запуска файла config.ru, который я дал выше, это:
$ gem install rack
$ rackup config.ru
Или, если вы хотите быть ближе к своей производственной системе:
$ gem install passenger
$ cd /app
$ passenger start
который установит вам сервер nginx с пассажиром и запустит ваше приложение.
В большинстве случаев вы никогда не будете использовать стойку напрямую, а вместо этого используйте ruby on rails, sinatra или другую фреймворк, чтобы сгенерировать html для вас (теперь они используют стойку ниже, чтобы обеспечить общий api с веб-серверами).
Ответ 4
Ruby 1.9.2+ простая команда.
ruby -run -e httpd . -p 5000
из этой статьи http://til.justincampbell.me/start-an-http-server-with-ruby-run/
другая статья https://gist.github.com/willurd/5720255
Ответ 5
Я слышал, что mod_ruby - это хорошо. В отличие от #!/path/to/your/ruby
, mod_ruby не будет порождать нового интерпретатора ruby.
https://github.com/shugo/mod_ruby
Ответ 6
Запустите это из корня приложения.
ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"
Ответ 7
#!/usr/bin/env ruby //shebang line to indicate path to ruby.
require 'cgi' //cgi file to create a simple cgi object.
cgi = CGI.new //instantiating a cgi object.
puts cgi.header //thats telling the server about the type(html).
puts "hello" // thats the output on the browser.