Rubyのインストールとプログラム実行でエラーが発生しています

このQ&Aのポイント
  • 初心者がRubyを使ってみたくて、Win7 64bitにRubyをインストールしましたが、一部のプログラムが動かない問題が発生しています。
  • CGIプログラムの実行やダウンロードした日時表示のプログラムも正常に動作しません。
  • 特に、Time.nowでエラーが発生しているようです。解決策を教えていただきたいです。
回答を見る
  • ベストアンサー

today = Time.now が動かない

初心者です。rubyを使ってみたくて、下記サイトからWin7 64bit にインスト-ルしました。 http://www.kkaneko.com/rinkou/ruby/rubyinstaller.html すべてうまくいったように思います。 さらに、http://jp.rubyist.net/magazine/?0011-CGIProgrammingForRubyBeginners を参照に、CGI プログラムとして実行のため、 rubima011-cgi.zipをインストール。無事うごきましたが、 print.rb は動きませんでした。 さたに、HTTPDでもためしてみましたが、同じように、print.rbが動きません。 そして、他さいとから、ダウンした日時表示の time.rb も動きません。 > #!/usr/local/bin/ruby > today = Time.now > wdays = ["日", "月", "火", "水", "木", "金", "土"] > print "Content-type: text/html\n\n" > print <<END 以下略 > END > exit today = Time.now で、エラーを起こしているのだと思います。 > print "Content-type: text/html\n\n" 以下だと正常に表示されます。 どなたか、解決策を教えてください。 よろしくお願いします。

  • Ruby
  • 回答数1
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.1

Ruby 1.9 なら、ソースの文字コードの指定が必要です。 #!/usr/local/bin/ruby # encoding: Shift_JIS とか、 #!/usr/local/bin/ruby # encoding: utf-8 とか指定してください。

mgenda
質問者

お礼

ありがとうございました。 無事に、動いてくれて、感激しています。 これからが、スタートです。 しっかり、勉強していきたいと思っています。 ほんとうに、ありがとうございました。

関連するQ&A

  • RubyでCGIが動きません。

    RubyでCGIを作ってApacheを使ってアプリの練習をしようとしていますが、CGIのお置き場所かApacheの設定かCGIの書き方が悪いのかIEで動かすとCGIの内容を中途半端に実行して下記のようになってしまいます。 #!/ruby/bin/ruby -Ks print "Content-type: text/html\n\n" print "" print "" print "" print "" print "こんにちは、Ruby!" print "" CGIのソースは #!/ruby/bin/ruby -Ks print "Content-type: text/html\n\n" print "<html><head>" print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">" print "<title>RubyでCGI</title></head>" print "<body>" print "こんにちは、Ruby!" print "</body></html>" 一番簡単なプログラムだと思うのですが、どこがいけないのでしょうか。ちなみにOSはVISTAです。 ちょっと気になるのはApacheMonitorServerが動かないこともあります。タイトルにはErrorと出ますが、メッセージでは「この操作を正しく終了しました」と出ます。 ちなみにApacheは動いてます。LocalHostで確認できました。 どなたかどうすれば良いのか教えて頂けないでしょうか。 よろしくお願いします。結構長い時間悩んでいます。

    • 締切済み
    • CGI
  • rubyがInternalServerError

    こんばんは。 自鯖にて初めてrubyを動かそうとしたところInternalServerError(500エラー)が帰ってきます。 まず、httpd.confに ---------------------- AddHandler cgi-script .cgi .rb ---------------------- と追加しました(このため.htaccessは作成しなくていいと思う)。 コマンドラインにて[which ruby][whereis ruby]を使い、[/usr/bin/ruby]にrubyがあることはわかるのですが、エラーが出てしまいます。 [test.rb] ---------------------- #!/usr/bin/ruby print "Content-type: text/html\n\n" print "test" ---------------------- 上記プログラムには755のパーミッションを与えています。 上記のフォルダにはCGI実行権が与えられています。 上記のフォルダではCGIはしっかりと動きます。 上記のプログラムはコマンドライン上[ruby test.rb]では動きます。 また、他のサイトもいろいろ調べましたが #!/usr/bin/env ruby #!ruby #!/usr/local/bin/ruby どのいパスでもエラーがでました。 解決方法を教えてください。 サーバ ---------------------- CentOS 5.4Final Apache 2.2.3 Ruby 1.8.5 ----------------------

  • @PAGESのCGIについて

    @PAGESに登録してみて簡単なcgiをrubyで書いたのですがエラーになり通りません 本当なら@PAGESの掲示板に書くべきなのでしょうが凍結されていて書きこめませんでした わかる方助言をいただけるとありがたいです #!/usr/local/bin/ruby print "Content-type: text/html\n\n" print "Hello World" 拡張子はcgiにしてパーミッションは755です

    • ベストアンサー
    • CGI
  • Mac OSX LionでCGI/Ruby動かず

    Mac OSX Lionを使っています。 CGIでRubyを使いたいと思い、 以下のことを試したのですが、 500 Internal Server Error となってしまいます。 ◆やったこと 以下のファイルを /Library/WebServer/CGI-Executables に置きました。 (改行コードはLFとしました) --test.cgi--- #!/usr/bin/ruby print "Content-Type: text/html¥n¥n" puts "Hello Ruby" ----- そしてchmod 777としてブラウザから http://localhost/cgi-bin/test.cgi にアクセスしたところ、 500 Internal Server Error となってしまいます。 その際の/var/log/apache2/error.logは、 Premature end of script headers: test.cgi とだけ表示されます。 なんだか一番最初の所でつまづいてしまい、 めげそうになっております。 よろしくご教授ください。

    • ベストアンサー
    • CGI
  • Ruby/DBIが上手く動きません。。

    http://code.nanigac.com/source/wiki/view/496 上記のサイトさんを参考にRubyからMySQLのデータベースにアクセスするプログラムを作りました。 コマンドプロンプト上では動作するのですが、同パソコンでブラウザから開くとエラーをはきます。 どなたか理由を教えていただけないでしょうか? 環境 WindowsXP Professional Apache 2.0.63 ruby 1.8.6 dbi-0.2.0 MySQL 5.0.51a [ソースコード] #!/user/local/bin/ruby print "Content-type: text/html\n\n" def error_cgi() print "*** CGI Error List ***<br />" print "#{CGI.escapeHTML($!.inspect)}<br />" $@.each {|x| print CGI.escapeHTML(x), "<br />"} end begin require "dbi" require "cgi" print <<EOF <html> <head> <title>データベース</title> </head> <body> EOF # MySQLサーバへ接続 dbh = DBI.connect("dbi:Mysql:test:localhost", "testuser", "testpass") # サーババージョンの文字列を取得して、表示する。 row = dbh.select_one("SELECT VERSION()") print "Server version: #{row[0]}\n" print <<EOF </body> </html> EOF rescue DBI::DatabaseError => e print "An error occurred" print "Error code: #{e.err}" print "Error message: #{e.errstr}" rescue error_cgi() ensure # サーバから切断 dbh.disconnect if dbh end [プロンプト] Content-type: text/html <html> <head> <title>データベース</title> </head> <body> Server version: 5.0.51a-community-nt </body> </html> [ブラウザでのエラー] *** CGI Error List *** #<DBI::InterfaceError: Could not load driver (no such file to load -- C:/user/local/lib/ruby/site_ruby/1.8/dbd/Mysql)> C:/user/local/lib/ruby/site_ruby/1.8/dbi.rb:368:in `load_driver' C:/user/local/lib/ruby/site_ruby/1.8/dbi.rb:233:in `_get_full_driver' C:/user/local/lib/ruby/site_ruby/1.8/dbi.rb:219:in `connect' D:/Development/NotePC WEB/public_html/cgi-bin/database.rb:24

  • CGIが動作しません。

    最近、Perlを初めたのですが、 CGIがうまく動作しません。 他のCGIは動作しているので CGIは動作する環境だと思います。 http://からフルパスでCGIを実行しても、 以下のエラーがでます。 -------------------------------------  500 InInternalServerError  サーバーエラーです。  以下の理由が考えられます。  パーミッション等の設定が  間違っている可能性があります。  サイト管理者にお問い合わせ下さい。 ------------------------------------- ちなみに以下のような簡単なCGIも同様です。 ===================================== #!/usr/local/bin/perl print "Content-type: text/html\n\n"; print "<html><head>\n"; print "<meta http-equiv=Content-Type content=text/html; charset=x-sjis>\n"; print "<title>StartCGI</title></head>\n"; print "<body>\n"; print "<p align=center><font size=4>初めて書いたCGI</font></p>\n"; print "</body></html>\n"; exit; =====================================  なぜなんでしょう。 困ってます。 ご教授の程、宜しくお願い致します。

    • ベストアンサー
    • CGI
  • TOK2で基礎的なCGIをUPしたが動かない。

    TOK2(http://tok2.com/)に「posttest2.cgi」をUPしました。 ファイルマネージャで確認すると、CGIのパーミッションは700、 CGIを設置するディレクトリーのパーミッションは701です。 以下 posttest2.cgiです。 -------------------START----------------------- #!/usr/bin/perl print "Content-Type:text/html\n\n"; print "<html>\n"; print "<head><title>テスト</title></head>\n"; print "<body>\n"; print "TEST"; print "</body></html>\n"; ------------------- END ----------------------- IEでこのCGIを開くと「500 Internal Server Error 」になってしまいます。。 なにが悪いのでしょう?

    • ベストアンサー
    • CGI
  • Ruby CGI HTTPヘッダ

    Rubyで、 CGIがクライアント(ブラウザ等)から受けたHttpリクエストヘッダとその値を全て取得して表示したいです。(どのようなヘッダが付与されても) 以下を例に教えてください。 #!/usr/bin/ruby require 'cgi' cgi = CGI.new puts "Content-Type:text/html\n\n" puts "<html>\n" puts "<body>\n" #ここにどのように書いたら良いですか? puts "</body></html>\n"

  • 【JRuby】でcgi

    JRubyでcgiをためしてみたいです。 先ずは手始めにリクエストを受けると『hello World』をレスポンスするcgiを書いてみました。 JRubyはrubyの文法でOKとのことなので、以下の様に書きました。 require 'cgi' CGI.new().out({'status'=>'OK','type'=>'text/plain'}){'hello World'} 先ずは、Webサーバに上げる前に、offline modeで試してみようと思い、 DOS窓を開いて、 >jruby cgi.rb と実行しました。実行結果を以下に記します。 >jruby cgi.rb (offline mode: enter name=value pairs on standard input) ^Z C:/Program Files/Java/jruby-1.3.1/bin/../lib/ruby/1.8/cgi.rb:1124:in `initializ _query': undefined method `join' for nil:NilClass (NoMethodError) from C:/Program Files/Java/jruby-1.3.1/bin/../lib/ruby/1.8/cgi.rb:2276: n `initialize' from cgi.rb:3 因みにrubyでの実行結果は以下でした。 >ruby cgi.rb (offline mode: enter name=value pairs on standard input) ^Z Status: 200 OK Content-Type: text/plain Content-Length: 11 hello World 仮に、jrubyのoffline modeでrubyと同じ結果が出せるようになっても、 その先、Webサーバにどのように仕込んでいくのかも知らないのですが、 jrubyでcgiを書くってことは、rubyで書くようにお手軽にはできない 物なのでしょうか?

  • Ruby:CGI Content-Type: の設定方法

    以下に示すcgiの実行結果をContent-Type: application/x-javascriptにしたいのですが、どうしたら良いですか? #!/usr/local/bin/ruby require "cgi" cgi = CGI.new time=Time.new cgi.out do "document.write(\"#{time}\");" end

専門家に質問してみよう