Я настроил установку Apache для запуска сценариев Ruby CGI. Сейчас я пытаюсь запустить простой CGI-скрипт на Ruby, который требует гем.
Когда я запускаю этот скрипт из командной строки, он выводит правильно. Но когда я называю его скриптом Apache CGI, он генерирует Apache Internal Server Error . Сценарий выглядит так:
#!/Ruby/bin/ruby
require 'RedCloth' # <-- This is the gem
puts "Content-type: text/html"
puts
puts
puts "<html>"
puts "<head>"
puts "</head>"
puts "<body>"
puts "I want to call a gem."
puts "</body>"
puts "</html>"
Журнал ошибок Apache показывает следующие строки:
C:/Ruby/lib/ruby/1.9.1/rubygems/config_file.rb:56:in `join': can't convert nil into String (TypeError)
[error] [client 127.0.0.1] \tfrom C:/Ruby/lib/ruby/1.9.1/rubygems/config_file.rb:56:in `<class:ConfigFile>'
[error] [client 127.0.0.1] \tfrom C:/Ruby/lib/ruby/1.9.1/rubygems/config_file.rb:28:in `<top (required)>'
[error] [client 127.0.0.1] \tfrom <internal:lib/rubygems/custom_require>:29:in `require'
[error] [client 127.0.0.1] \tfrom <internal:lib/rubygems/custom_require>:29:in `require'
[error] [client 127.0.0.1] \tfrom C:/Ruby/lib/ruby/1.9.1/rubygems.rb:1110:in `<top (required)>'
[error] [client 127.0.0.1] \tfrom <internal:lib/rubygems/custom_require>:29:in `require'
[error] [client 127.0.0.1] \tfrom <internal:lib/rubygems/custom_require>:29:in `require'
[error] [client 127.0.0.1] \tfrom <internal:gem_prelude>:167:in `load_full_rubygems_library'
[error] [client 127.0.0.1] \tfrom <internal:gem_prelude>:217:in `try_activate'
[error] [client 127.0.0.1] \tfrom <internal:lib/rubygems/custom_require>:32:in `rescue in require'
[error] [client 127.0.0.1] \tfrom <internal:lib/rubygems/custom_require>:29:in `require'
[error] [client 127.0.0.1] \tfrom C:/Apache/Apache2.2/cgi-bin/cgitest.rb:3:in `<main>'
Когда я не включаю строку require 'RedCloth'
, Apache прекрасно выполняет мой скрипт cgi.
Есть ли что-то очевидное, что я здесь скучаю? Можете ли вы даже выполнить сценарий Ruby CGI, для которого требуется гем? Любая идея будет принята с благодарностью.
Спасибо,
Maurice