在Dreamhost共享服务器上设置Ruby on Rails 4

时间:2014-10-24 06:16:48

标签: ruby-on-rails-4 dreamhost

所以我是Ruby / Rails的新手,并开始在我自己的计算机上使用最新版本编写一个小应用程序。我目前通过Dreamhost共享托管,并且我想尝试在子域上部署我使用新用户设置的内容。不幸的是,我没有意识到Ruby和Rails的默认版本已经过时了,所以我开始寻找更新它的方法。一些谷歌搜索,我偶然发现了一些说明,似乎他们应该得到答案:

RAILS 4.0.0 WITH RUBY 2.0 ON A DREAMHOST SHARED SERVER

起初似乎它正在工作,ruby和rails都安装正常并开始指向最新版本。不幸的是,当我尝试完成最后的步骤并设置测试应用程序时,每次都会返回500错误。

Rails application failed to start properly

我浏览了我的目录以查找日志文件,并在我的home / user / logs / subdomain.domain.com / http / error.log文件中找到了以下一堆:

  

[Thu Oct 23 15:11:41 2014] [错误] [客户端24.93.22.1]由于可能的配置错误,请求超出了10次内部重定向的限制。使用' LimitInternalRecursion'必要时增加限额。使用' LogLevel debug'获得回溯。

通过dreamhost wiki获取FCGI和Rails,有人建议在调试时从控制台运行我的dispatch.fcgi并查看它吐出的错误。当我这样做时,似乎没有任何事情发生,就像它以某种方式陷入无限循环,直到我再次进入第二次,此时我回到命令提示符。这是我的dispatch.fcgi文件,我真的不明白这里发生了什么,因为我只是从我发布的第一个链接复制并粘贴它,我从来没有之前不得不做这样的事情。

#!/home/user/ruby/bin/ruby
ENV['RAILS_ENV'] = 'development'
ENV['HOME'] ||= `echo ~`.strip
ENV['GEM_HOME'] = File.expand_path('~/.gems')
ENV['GEM_PATH'] = File.expand_path('~/.gems')
require 'fcgi'
require File.join(File.dirname(__FILE__), '../config/environment.rb')
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

这里也是我的.htaccess文件,我创建并扔进了我的家/用户文件夹,再次,这是一个我不太了解的直接复制/粘贴工作。

<IfModule mod_fastcgi.c>
AddHandler fastcgi-script .fcgi
</IfModule>
<IfModule mod_fcgid.c>
AddHandler fcgid-script .fcgi
</IfModule>
Options +FollowSymLinks +ExecCGI
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ public/dispatch.fcgi/$1 [QSA,L]
ErrorDocument 500 "Rails application failed to start properly"

所以,我意识到Dreamhost共享服务器可能不是运行Rails的最佳环境,但它是我现在所拥有的,如果我能让它运行起来,我会感到高兴。即使没有办法解决问题,我也会在这一点上解决这个问题,因为我已经无法解决问题,因为我已经把头撞到了墙上,因为今天在互联网试图弄清楚我到底在做什么。

1 个答案:

答案 0 :(得分:0)

我有同样的错误。

在我的Gemfile中用gem "fcgi"解决了它。