English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Ruby é uma linguagem genérica, não é apenas uma linguagem aplicada ao desenvolvimento web, mas o desenvolvimento de aplicações web e ferramentas web com Ruby é o mais comum.
Usando Ruby, você pode não só escrever seu próprio servidor SMTP, programa FTP ou servidor web Ruby, mas também usar Ruby para programar CGI.
Vamos dedicar um tempo para aprender a editar CGI no Ruby.
Para entender melhor como o CGI funciona, podemos seguir o fluxo de clique em um link ou URL na página da web:
1Acesse a URL usando seu navegador e conecte-se ao servidor web HTTP.
2O servidor web recebe informações de solicitação, resolve a URL e verifica se o arquivo solicitado existe no servidor. Se existir, retorna o conteúdo do arquivo; caso contrário, retorna uma mensagem de erro.
3O navegador recebe informações do servidor e exibe o arquivo recebido ou uma mensagem de erro.
Programas CGI podem ser scripts Ruby, scripts Python, scripts PERL, scripts SHELL, C ou C++ programas, etc.
Antes de começar a programar CGI, certifique-se de que seu servidor web suporta CGI e que o processador CGI está configurado.
O Apache suporta configurações CGI:
Configure o diretório CGI:
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
Todos os servidores HTTP executam programas CGI em um diretório pré-configurado. Este diretório é chamado de diretório CGI e, conforme a convenção, é nomeado/var/www/cgi-diretório bin.
Os arquivos CGI têm a extensão .cgi, e o Ruby também pode usar a extensão .rb.
Pelo padrão, o servidor Linux está configurado para executar cgi-O diretório bin contém/var/www。
Se você quiser especificar outro diretório para a execução de scripts CGI, pode modificar o arquivo de configuração httpd.conf conforme mostrado a seguir:
<Directory "/var/www/cgi-bin"> AllowOverride None Options +ExecCGI Order allow,deny Allow from all body>/Directory>
Adicione o sufixo .rb no AddHandler, assim podemos acessar arquivos de scripts Ruby com final .rb:
AddHandler cgi-script.cgi .pl .rb
O código básico do Ruby CGI é mostrado a seguir:
#!/usr/bin/ruby puts "Content"-type: text/html\n\n" puts "<html><body>This is a test</body></html>"
Você pode manter o código no arquivo test.cgi, carregar no servidor e atribuir permissões suficientes para executar como script CGI.
Se o endereço do seu site for http://<form method="POST" action="http:/ ,即可用过http://<form method="POST" action="http:/Acesso ao programa test.cgi, o resultado de saída é: "This is a test."。
Após o navegador acessar o endereço, o servidor da Web encontrará o arquivo test.cgi na pasta do site e o analisará com o interpretador Ruby para acessar o documento HTML.
Ruby pode chamar a biblioteca CGI para escrever scripts CGI mais complexos.
O seguinte código chama a biblioteca CGI para criar um script de CGI.
#!/usr/bin/ruby require 'cgi' cgi = CGI.new puts cgi.header puts "<html><body>This is a test</body></html>"
No seguinte código, é criado um objeto CGI e as informações de cabeçalho são impressas.
Pode-se obter os dados de submissão do formulário (ou parâmetros da URL) de duas maneiras usando a biblioteca CGI. Por exemplo, URL:/cgi-bin/test.cgi?FirstName=Zara&LastName=Ali。
Você pode usar CGI#[] para obter diretamente os parâmetros FirstName e LastName:
#!/usr/bin/ruby require 'cgi' cgi = CGI.new cgi['FirstName'] # => ["Zara"] cgi['LastName'] # => ["Ali"]
Outra maneira de obter dados do formulário:
#!/usr/bin/ruby require 'cgi' cgi = CGI.new h = cgi.params # => {"FirstName"=>["Zara"], "LastName"=>["Ali"]} h['FirstName'] # => ["Zara"] h['LastName'] # => ["Ali"]
O seguinte código é usado para recuperar todos os valores das chaves:
#!/usr/bin/ruby require 'cgi' cgi = CGI.new cgi.keys # => ["FirstName", "LastName"]
Se o formulário contiver vários campos com o mesmo nome, os valores do campo idêntico serão armazenados em um array.
No exemplo a seguir, especifica três campos iguais no formulário "name", com os valores "Zara", "Huma" e "Nuha":
#!/usr/bin/ruby require 'cgi' cgi = CGI.new cgi['name'] # => "Zara" cgi.params['name'] # => ["Zara", "Huma", "Nuha"] cgi.keys # => ["name"] cgi.keys # => ["name"]
cgi.params # => {"name"=>["Zara", "Huma", "Nuha"]}Atenção:
O Ruby automaticamente identifica os métodos GET e POST, portanto, não é necessário tratar os dois métodos de maneira diferente.
Aqui está o código HTML relacionado: <html> <body>//<form method="POST" action="http:/www.example.com test.cgi"> /<input type="submit" value="Submit Data" First Name :<input type="text" name="FirstName" value="" /<input type="submit" value="Submit Data" <br /<input type="submit" value="Submit Data" Last Name :<input type="text" name="LastName" value="" /<input type="submit" value="Submit Data" body>/> body>/form> body>/<
Criar Formulários e HTML O CGI contém muitos métodos para criar HTML, cada tag HTML tem um método correspondente.
Antes de usar esses métodos, é necessário criar o objeto CGI com CGI.new.
#!/usr/bin/ruby Para tornar a nesting de tags mais simples, esses métodos fazem do conteúdo um bloco de código, que retorna a string como o conteúdo da tag. Veja a seguir: require "cgi"4cgi = CGI.new("html" }) cgi.html{ cgi.head{ "\n" }+cgi.title{ "This Is a Test" } } + cgi.body{ "\n" }+ cgi.form{ "\n" }+ cgi.hr + cgi.h1 { "A Form: " } + "\n"+ cgi.textarea("get_text") +"\n"+ cgi.br + cgi.submit } } } }
Quando você está lidando com parâmetros de URL ou dados de formulário HTML, é necessário escapar os caracteres especiais especificados, como: aspas (") e barras invertidas (\)/)。
O objeto CGI do Ruby oferece métodos CGI.escape e CGI.unescape para lidar com a escapamento desses caracteres especiais:
#!/usr/bin/ruby require 'cgi' puts CGI.escape(Zara Ali/Uma Garota Doce e Ácida
O resultado da execução do código acima é o seguinte:
#!/usr/bin/ruby require 'cgi' puts CGI.escape(Zara Ali/Uma Garota Doce e Ácida
Outro exemplo:
#!/usr/bin/ruby require 'cgi' puts CGI.escapeHTML('<h1>Zara Ali/A Sweet & Sour Girl</h1>')
O resultado da execução do código acima é o seguinte:
<h1>Zara Ali/A Sweet & Sour Girl</h1>'
A seguir estão os métodos completos da classe CGI no Ruby
CGI Ruby - Métodos relacionados à Biblioteca CGI Padrão
Cookies CGI Ruby - Como lidar com cookies CGI.
Sessões CGI Ruby - Como lidar com sessões CGI.