English 中文(简体)
How to use ruby thin with CGI scripts?
原标题:

I ve written some ruby CGI scripts (using the Ruby CGI class) that I serve from my production server using lighttpd. I want to test them on my development server using thin. Basically, I want to drop all my CGI scripts in a directory and start thin in that directory. Then, any requests to http://localhost:3000/<script> should just execute <script> in the current directory and return the results. If thin has a built-in way of doing this, I can t find it. I would imagine the Rack config file for this is easy if you know what you re doing, but I don t.

Update:

This rackup file seems to work. I m not sure if it s the best solution, but it should be fine for a development environment.

run(lambda do |env|
  require  rubygems 
  require  systemu 
  script = env[ REQUEST_PATH ][1..-1] +  .rb 
  response =    
  err =   
  systemu([ ruby , script],  stdout  => response,  stderr  => err,  env  => { 
     foo  =>  bar  })
  if err.length > 0 
    [ 500, { Content-Type  =>  text/plain }, err ]
  else
    idx = 0
    status = -1
    headers = {}
    while true
      line_end = response.index("
", idx)
      line = response[idx..line_end].strip
      idx = line_end+1

      if status < 0
        if line =~ /(ddd)/
          status = $1.to_i
        else
          raise "Invalid status line: #{line}"
        end
      elsif line.empty?
        break
      else
        name, value = line.split /: ?/
        headers[name] = value
      end
    end
    content = response[idx..-1]
    [status, headers, content]
  end
end)
问题回答

I m a little unclear as to why Rack is necessary at all. If you wrote the script using Ruby s built-in CGI module, you should be able to just tell thin to treat the directory as a cgi-bin,just like the Apache ScriptAlias directive, and Ruby CGI will take care of the rest. If thin can t do this, perhaps lighttpd would be a better solution.





相关问题
Ruby parser in Java

The project I m doing is written in Java and parsers source code files. (Java src up to now). Now I d like to enable parsing Ruby code as well. Therefore I am looking for a parser in Java that parses ...

rails collection_select vs. select

collection_select and select Rails helpers: Which one should I use? I can t see a difference in both ways. Both helpers take a collection and generates options tags inside a select tag. Is there a ...

RubyCAS-Client question: Rails

I ve installed RubyCAS-Client version 2.1.0 as a plugin within a rails app. It s working, but I d like to remove the ?ticket= in the url. Is this possible?

Ordering a hash to xml: Rails

I m building an xml document from a hash. The xml attributes need to be in order. How can this be accomplished? hash.to_xml

multiple ruby extension modules under one directory

Can sources for discrete ruby extension modules live in the same directory, controlled by the same extconf.rb script? Background: I ve a project with two extension modules, foo.so and bar.so which ...

Text Editor for Ruby-on-Rails

guys which text editor is good for Rubyonrails? i m using Windows and i was using E-Texteditor but its not free n its expired now can anyone plese tell me any free texteditor? n which one is best an ...

热门标签