Как запустить простой скрипт ruby ​​на любом веб-сервере (Apache или Mongrel или что-то еще) - PullRequest
21 голосов
/ 18 июня 2011

Мне кажется очень забавным, что когда я ищу что-то связанное с ruby, все результаты, связанные с ruby ​​on rails, появляются. Так никто больше не использует сырой рубин?

Тем не менее, я новичок в ruby. Этим утром я только пытался запустить простой скрипт ruby ​​world ruby ​​на веб-сервере, сначала apache 2, а затем попробовал ублюдок. Но, к сожалению, я потерпел неудачу. Я гуглил все, что мог, но результат показывает только в отношении рубина на рельсах. Так есть ли способ запустить скрипт ruby ​​на любом веб-сервере, или мне нужно использовать ror, даже если я просто хочу создать приложение hello world?

Ответы [ 7 ]

10 голосов
/ 18 июня 2011

Sinatra, вероятно, является лучшим выбором для запуска скрипта Ruby с веб-сервера без Rails.

Взгляните сюда: http://www.sinatrarb.com

Из документов Синатры:

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 .

7 голосов
/ 18 июня 2011

Вы можете настроить Apache (например) для запуска файлов .rb как сценарии CGI, а затем добавить строку shebang (#!/path/to/your/ruby или, возможно, #!/usr/bin/env ruby) вверху сценария. Однако это не оптимально, поскольку для каждого запроса запускается новый интерпретатор.

4 голосов
/ 18 июня 2011

Наиболее часто используемый способ работы с сайтом ruby ​​- это пассажир: http://www.modrails.com/ Это не очень сложно установить, и вы используете, вот он документ для Apache: http://www.modrails.com/documentation/Users%20guide%20Apache.html#_deploying_a_ruby_on_rails_application

Ваше приложение должно быть допустимым стоечным приложением, вот вам минимальный привет (допустим, / app - это корневая папка вашего приложения):

/ приложение / config.ru

require 'rack'
require 'app'
run(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

Сохраните вышеуказанные файлы и создайте подпапку / app / public (требуется пассажиру для обнаружения приложения ruby ​​/ rails / sinatra) и используйте / app / public в качестве DocumentRoot в вашей конфигурации apache.

Это может показаться страшным, но это для производственного развертывания, в процессе разработки вы действительно не хотите связываться с реальным сервером.

Все, что вам нужно для запуска файла config.ru, который я дал выше, это:

$ gem install rack
$ rackup config.ru

Или, если вы хотите быть ближе к вашей производственной системе:

$ gem install passenger
$ cd /app
$ passenger start

, который установит вам сервер nginx с пассажиром и запустит ваше приложение.

В большинстве случаев вы никогда не будете использовать стеллаж напрямую, а вместо этого будете использовать ruby ​​на rails, sinatra или другую инфраструктуру для генерации html-кода (все они используют стеллаж ниже, чтобы предоставить общий API для веб-серверов).

3 голосов
/ 13 декабря 2013

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

1 голос
/ 26 апреля 2013

Запустите это из корня вашего приложения.

ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"
1 голос
/ 30 марта 2013

Я слышал, что mod_ruby - это хорошо.В отличие от #!/path/to/your/ruby, mod_ruby не создаст нового интерпретатора ruby.

https://github.com/shugo/mod_ruby

0 голосов
/ 25 ноября 2015
#!/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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...