dispatch.fcgi и ruby ​​на рельсах используя rvm - PullRequest
4 голосов
/ 12 января 2012

Я пытаюсь получить приложение "hello world", работающее на моей хостинг-службе (Dreamhost), используя rvm . Я использую rvm , чтобы я мог использовать Ruby 1.9.2 и Rails 3.1

Я признаю, что есть лучшие хостинговые среды и лучшие способы сделать это, но сейчас я подумал, что я попытаюсь изо всех сил попытаться сделать это.

У меня работает скрипт cgi, который показывает, что rvm работает нормально: http://rails.hortitude.com/foo.cgi

#!/usr/bin/env /home/hortitude/.rvm/bin/ruby-1.9.2-p290

puts "Content-Type: text/html"
puts
puts "<html>"
puts "<body>"
puts "<h1>Hello Ruby!</h1>"
puts "<p>shebang: #!/usr/bin/env /home/hortitude/.rvm/bin/ruby-1.9.2-p290</p>"
puts "<p>RUBY_VERSION: " + RUBY_VERSION + "</p>"
puts "<p>RUBY_PLATFORM: " + RUBY_PLATFORM + "</p>"
puts "<p> RUBY_RELEASE_DATE: " + RUBY_RELEASE_DATE + "</p>"
puts "</body>"
puts "</html>"
puts "</html>"

Однако мой скрипт dispatch.fcgi всегда выдает ошибку (находится в журналах ошибок)

Преждевременный конец заголовков скриптов: dispatch.fcgi

Вот мой скрипт dispatch.fcgi:

#!/usr/bin/env /home/hortitude/.rvm/bin/ruby-1.9.2-p290

ENV['GEM_HOME'] ||= '/home/hortitude/.rvm/gems/ruby-1.9.2-p290'

require 'rubygems'
require 'fcgi'

ENV['RAILS_ENV'] ||= 'production'

# Set GEM_PATH and GEM_HOME ("user" is your dreamhost user)
##ENV['GEM_HOME'] ||= '/home/user/.gems'

require 'rubygems'
Gem.clear_paths


require File.join(File.dirname(__FILE__), '../config/environment')

class Rack::PathInfoRewriter
 def initialize(app)
   @app = app
 end

 def call(env)
   env.delete('SCRIPT_NAME')
   parts = env['REQUEST_URI'].split('?')
   env['PATH_INFO'] = parts[0]
   env['QUERY_STRING'] = parts[1].to_s
   @app.call(env)
 end
end

Rack::Handler::FastCGI.run  Rack::PathInfoRewriter.new(Helloworld::Application)
...