お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2010-10-04 19:03:36

butachokin
メンバ
登録日: 2010-03-01

Rubyで、サーバ(端末)で実行すると動くが、外部(WWW)からアクセスすると動かない

UbuntuServer10.04を使用しています。

Rubyで、gemを使いsystemuをインストールし、
systemuを利用したプログラムを作成しているのですが、困ったことがあります。

作成したプログラムを、端末から「hoge.rb」と入力するとノーエラーなのに、
httpを使用し外部からアクセスすると500エラーになります。
いろいろとエラー原因を調べていましたが、どうも「require 'systemu'」でのエラーのようです。
begin~rescueを使ってもエラーメッセージが確認できませんでした。

#!/usr/bin/ruby
print "Content-type: text/html\n\n"
puts "1<br>"
require 'systemu'
puts "2<br>"

これを外部から実行すると、1だけが表示されます。
内部で実行している分には、意図した動作をしています。


どんなことが考えられますか?

オフライン

 

#2 2010-10-08 10:31:44

maki-tetsu
新しいメンバ
登録日: 2008-03-11

Re: Rubyで、サーバ(端末)で実行すると動くが、外部(WWW)からアクセスすると動かない

maki-tetsu と申します。

Ubuntu の話、、、と言うわけではないですが、分かる範囲なのでお答えします。
systemu は実際には利用したことがありませんが、良くある話としてサンプルで掲載された ruby スクリプトを以下のようにして実行してみてください。

#!/usr/local/bin/ruby

print "Content-type: text/html\n\n"
puts "1<br>"
require "rubygems"
require "systemu"
puts "2<br>"
res = systemu "echo hoge"
puts res

意図した通りに動作すると思います。
irb などを利用した場合は自動で rubygems がロードされますが、一般的には rubygems は別途ロードする必要があるためかと思います。

オフライン

 

Board footer

Powered by FluxBB