• ベストアンサー

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

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

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

cgi.out('application/x-javascript') do "document.write(\"#{time}\");" end マニュアルに書いてあるとおりです。

kingfruits
質問者

お礼

ありがとうございました。

関連するQ&A

  • XREA MySQL CGI Ruby エラー

    XREAの無料サーバーに設定されたMySQLのデータベースをCGIとして設定したRubyからアクセスしたいのですが、require 文を入れると Internal Server Error が出ます。(コメントアウトすると動きます) よろしくお願いします。 #!/usr/local/bin/ruby require 'mysql' #↑ここが問題と思われます puts 'Content-Type: text/html' puts '' puts '<!doctype html>' puts '<html>' puts '<head>' puts '<meta charset="utf-8">' puts '<title>TEST</title>' puts '</head>' puts '<body>' puts 'Hello World' #↓requireでエラーになるのでコメント中 #my = Mysql.new('127.0.0.1', 'id', 'password', 'dbname') #res = my.query('SELECT * from T_test') #res.each do |row| # puts row[0] #end puts '</body>' puts '</html>'

    • ベストアンサー
    • 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"

  • Ruby WEBrick cgiからgifが最後まで送れない。

    以下のようなHTTPサーバをWinXp上で動かしました。 #$ruby = "C:/ruby/bin/ruby.exe" require 'webrick' srv = WEBrick::HTTPServer.new({ :BindAddress => 'xxx.xxx.xxx.xxx', :CGIInterpreter => "c:/ruby/bin/ruby.exe", :Port => 80 }) srv.mount("/", WEBrick::HTTPServlet::FileHandler, "./", {:FancyIndexing=>true}) srv.start そして、以下のようなCGIをよびます。 #!/usr/bin/ruby STDOUT.binmode open("hoge.gif", "r") do |f| f.binmode body = f.read puts "content-type: image/gif" puts "content-length: #{body.size.to_s}" puts "" print body end すると、content-length分のHTTPボディーが送られてきません。 2種類のgifで試しましたが、193byte/724byte、289byte/451byteでした。 バージョンは、ruby 1.8.6、WEBrick 1.3.1です。 何が原因でしょうか?

  • 【ruby】クラスCGIを改造したい

    #!/usr/local/bin/ruby require 'cgi' require 'kconv' headers={ "status"=>"OK", "type"=>"text/html; charset=utf-8" } cgi=CGI.new hoge=cgi['arg'] cgi.out(headers){Kconv.toutf8(hoge)} 上記はcgiはクエリパラメータargに与えた文字列がUTF-8で表示される 物の基本骨格として記しました。 実際に作りたい物は、もう少し複雑で、cgi.outのブロックに渡す部分 は、ケースにより複数あります。 そこで、毎回ブロックに渡す部分をKconv.toutf8でくくるのは、如何な ものかと思い、CGIクラスそのものを改造して、 cgi.out(headers){hoge} と記述しても、UTF-8で出力されるようにしたいのですが、やり方が解 りません。 CGIクラスのoutメソッドをオーバーライドするのかなぁ? と思うのですが、オーバーライドってやった事が無いので、 手がかりがつかめません。 お手ほどきの、よろしくお願いいたします。

    • ベストアンサー
    • Ruby
  • Rubyでファイル転送

    Rubyでファイル転送のcgiを作成してみましたが動作しません。 実行後は選択したファイル(aa.jpg等)が作成されますが、 容量がゼロです。(FTPで確認) Apacheエラー------ undefined local variable or method `input'for main:Object(NameError) 変数nameはファイル名であり、c:\等は含まれていません。 ruby1.8.2------ #!/usr/bin/ruby -Ku print "Content-type: text/html\n\n" require "cgi" require 'net/ftp' input = CGI.new.params; cgi = CGI.new $name = input["name"][0] if input["name"][0] open("/home/movies/#{$name}","w") do |fh| fh.binmode fh.write imput['name'][0].read end end html------ <form action="***" method="get" enctype="multipart/form-data"> <input type="file" name="name" size="30"> <input type="submit" name="regist" value="選択"></form>

  • rubyのcgiライブラリでメタタグを記述するには

    rubyを最近勉強し始めた者です。cgiプログラムを書こうと考えています。 rubyにはcgiを記述するのに便利なライブラリというものがあり、 これを活用したいと考えているのですが、問題にぶつかりました。 HTMLにはメタ(meta)タグを最初に書き込みますが、cgiライブラリを使った際にはどう書くかがよくわかりません。 検索しても書いてあるページが見当たらず、悩んでいます。 例えば下記のプログラムでは、metaタグはどう記述すればいいのでしょうか。 (もちろんcgi.head内というのはわかりますが……) ご存知の方、よろしくお願いします。 cgi = CGI.new("html4Tr") cgi.out("charset" => "UTF-8") do cgi.html("PRETTY" => true) do cgi.head do cgi.title do "タイトル" end end + cgi.body do end end end

    • ベストアンサー
    • Ruby
  • 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 ----------------------

  • 【ruby】クラスCGIを改造して、クエリの文字コードを変えたい

    クエリパラメータを取得するのにCGIクラスを使っています。 Rubyのマニュアルでは『フォームフィールドの値を得る』として以下の様に記載してあります。 require "cgi" cgi = CGI.new values = cgi['field_name'] # <== 'field_name' の配列 私が使用しているサーバはWindowsサーバでして、取得したクエリ(フォームフィールド)は文字コードをs-jisに変換して使う事が大半です。 そこで、CGIクラスそのものを改造して、いちいちvalues.tosjisしなくてもよい様にしたいです。 実は以前に、同じような事を質問してまして(http://oshiete1.goo.ne.jp/qa4944090.html)alias を使えばこのようなことが出来るかなと思い、以下の様に書いてみました。(行頭は全角スペースです。) #!/usr/local/bin/ruby require 'cgi' require 'kconv' STDOUT.binmode STDIN.binmode class CGI  alias :initialize_orig :initialize  def initialize()   hash=initialize_orig()   hash.each do|key,val|    hash[key]=val.collect{|x|x.tosjis}   end   hash  end end cgi=CGI.new if cgi.has_key?('arg') then  STDERR.puts cgi['arg']  cgi.out(){'ok'} end 結果は `initialize': undefined method `each' for nil: NilClass (NoMethodError) で実行不可でした。 initializeはリターンできないからかな。 次に、 class CGI  alias :params_orig :params  def params()   hash=params_orig   hash.each do|key,val|    hash[key]=val.collect{|x|'*' + x + '*'}   end  hash end end などとも書いてみましたが、 undefined method `params' for class `CGI' で実行不可でした。 ご指導のほど、よろしくお願いいたします。

    • ベストアンサー
    • Ruby
  • if文を入れるとcgiが動きません。【Ruby】

    下記のプログラムは正常動作します。 #部、name1に文字列が入っていたら動作するプログラムを 追加すると、ブラウザが白紙になります。エラーなしです。 間違いを教えてください。このファイルはhoge.cgiです。 #!/usr/bin/ruby print "Content-type: text/html\n\n" require "cgi-lib" input = CGI.new #if name1 #print "name is ", name1 #end print <<-"EOB" <form method="POST" action="./hoge.cgi"> name<input type="text" name="name1" size="10"> <input type="submit" value="send"> </form> </body> </html> EOB

  • 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

専門家に質問してみよう