web-dev-qa-db-ja.com

簡単なRubyスクリプトを任意のWebサーバー(ApacheまたはMongrelまたはその他)で実行する方法)

Rubyに関連するものを検索すると、すべてのRuby on Rails関連の結果がポップアップするので、raw Rubyもう?

しかし、私はRubyを初めて使用します。今朝、私は単純なhello world RubyスクリプトをWebサーバーで実行しようとしていました。最初はApache2で、次に雑種を試しました。しかし、残念ながら失敗しました。可能な限りグーグルで検索しましたが、結果はRailsでRubyについてのみ表示されます。したがって、任意のWebサーバーでRubyスクリプトを実行する方法は実際にあります。または、私がhello worldアプリケーションを実行したいだけですか?

21
devzee

Railsを使用せずにWebサーバーからRubyスクリプトを実行するには、Sinatraがおそらく最善の策です。

ここを見てください: 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 にアクセスすると、「HelloWorld」が見つかります。

.。

これに加えて、Apacheまたは他のWebサーバーでの実行についても質問するので、新しいSinatraベースのアプリケーションをApacheまたはNginxにデプロイする方法について次のチュートリアルを確認することをお勧めします。

Apache: http://www.pastbedti.me/2009/11/deploying-a-sinatra-app-with-Apache-and-phusion-passenger-aka-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/

両方のチュートリアルが乗客を介したシナトラの実行をカバーしていることに注意してください( http://www.modrails.com/ -「modrails」の名前で延期しないでください:))、私は幸運に恵まれましたApacheとNginxでアプリをデプロイする際に使用します。

10
shedd

たとえば、.rbファイルをCGIスクリプトとして実行するようにApacheを構成してから、Shebang行を追加することができます(#!/path/to/your/Ruby または多分 #!/usr/bin/env Ruby)スクリプトの先頭。ただし、リクエストごとに新しいインタプリタが起動するため、最適ではありません。

7
cHao

Ruby Webサイトを実行するためのより一般的に使用される方法は乗客です: http://www.modrails.com/ インストールはそれほど難しくなく、使用します。これがApacheのドキュメントです: http://www.modrails.com/documentation/Users%20guide%20Apache.html#_deploying_a_Ruby_on_Rails_application

アプリケーションは有効なラックアプリケーションである必要があります。これが最小限のHelloWorldです(たとえば、/ 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

上記のファイルを保存し、サブフォルダー/ app/public(Ruby/Rails/sinatraアプリケーションを検出するために乗客が必要)を作成し、Apache構成でDocumentRootとして/ app/publicを使用します。

これは恐ろしいように見えるかもしれませんが、これは本番デプロイメント用です。開発では、実際のサーバーをいじりたくありません。

上記で指定したconfig.ruファイルを実行するために必要なのは次のとおりです。

$ gem install rack
$ rackup config.ru

または、本番システムに近づきたい場合:

$ gem install passenger
$ cd /app
$ passenger start

これにより、passengerを使用してnginxサーバーがインストールされ、アプリケーションが実行されます。

ほとんどの場合、ラックを直接使用することはありませんが、代わりにRuby on Rails、sinatra、または別のフレームワークを使用してhtmlを生成します(これらはすべて、以下のラックを使用してWebサーバーに共通のAPIを提供します) )。

4
Schmurfy

Ruby1.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

3
seapy

これをアプリのルートから実行します。

Ruby -r webrick -e "s = WEBrick::HTTPServer.new(:Port => 8000, :DocumentRoot => Dir.pwd); trap('INT') { s.shutdown }; s.start"
1
rdsoze

Mod_Rubyは良いと聞きました。とは異なり、#!/path/to/your/Ruby、mod_Rubyは新しいRubyインタープリターを生成しません。

https://github.com/shugo/mod_Ruby

1
tyler