Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-通过浏览器获取500服务器错误,但通过脚本/控制台工作。有什么好处?_Ruby On Rails_Hosting - Fatal编程技术网

Ruby on rails Rails-通过浏览器获取500服务器错误,但通过脚本/控制台工作。有什么好处?

Ruby on rails Rails-通过浏览器获取500服务器错误,但通过脚本/控制台工作。有什么好处?,ruby-on-rails,hosting,Ruby On Rails,Hosting,好吧,我已经追了好几个小时了,我就是想不出来。我有一个RubyonRails应用程序,已经部署到我的托管提供商DreamHost。我已经创建了一个名为“stage”的新环境,并在/config/environment文件夹中创建了一个stage.rb文件,并将下面的一行放到my environment.rb中 # Be sure to restart your server when you modify this file # Specifies gem version of Rails t

好吧,我已经追了好几个小时了,我就是想不出来。我有一个RubyonRails应用程序,已经部署到我的托管提供商DreamHost。我已经创建了一个名为“stage”的新环境,并在/config/environment文件夹中创建了一个stage.rb文件,并将下面的一行放到my environment.rb中

# Be sure to restart your server when you modify this file

# Specifies gem version of Rails to use when vendor/rails is not present
RAILS_GEM_VERSION = '2.3.5' unless defined? RAILS_GEM_VERSION

ENV["RAILS_ENV"] ||= "stage"

# Bootstrap the Rails environment, frameworks, and default configuration
require File.join(File.dirname(__FILE__), 'boot')

Rails::Initializer.run do |config|
我能跑

RAILS_ENV=stage script/console
一切都很好。我可以运行rakedb:migrate并生成我的数据库。然后,我可以进入控制台,根据我的模型进行操作。我还可以在stage.log中看到ActiveRecord活动

问题是,当我打开浏览器并导航到URL时,我得到的错误是500

很抱歉,出了点问题

当我试图通过浏览器访问网站时,我没有看到任何写入stage.log的内容

我的apache日志文件如下所示

1.1.1.1 - - [19/Jan/2010:06:05:01 -0800] "GET /classes/calendar HTTP/1.1" 500 861 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10" 
我甚至尝试过从控制台运行应用程序控制器,这也很有效。我就是不明白为什么这个页面不能在浏览器上正常运行

是否有我缺少的权限设置。我认为在DreamHost上,FTP用户和服务器运行的用户是相同的,因此我认为我拥有正确的权限,但我只是不确定

任何帮助都将不胜感激,
Rob

通常,此问题可能是脚本权限问题,也可能是您的gem环境问题。我不熟悉在DH上部署rails应用程序,您使用的是Passenger还是fastcgi

在shell中,通过运行
gem env
,检查gem环境:

RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.5
  - RUBY VERSION: 1.8.7 (2009-06-12 patchlevel 174) [i686-linux]
  - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /usr/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /usr/lib/ruby/gems/1.8
     - /home/<username>/.gem/ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - :sources => ["http://gems.rubyforge.org/", "http://gems.github.com", "http://gemcutter.org"]
  - REMOTE SOURCES:
     - http://gems.rubyforge.org/
     - http://gems.github.com
     - http://gemcutter.org
RubyGems环境:
-RUBYGEMS版本:1.3.5
-RUBY版本:1.8.7(2009-06-12修补级别174)[i686 linux]
-安装目录:/usr/lib/ruby/gems/1.8
-RUBY可执行文件:/usr/bin/RUBY
-可执行目录:/usr/bin
-RUBYGEMS平台:
-红宝石
-x86Linux
-宝石路径:
-/usr/lib/ruby/gems/1.8
-/home/.gem/ruby/1.8
-GEM配置:
-:update_sources=>true
-:verbose=>true
-:benchmark=>false
-:backtrace=>false
-:批量_阈值=>1000
-:sources=>[”http://gems.rubyforge.org/", "http://gems.github.com", "http://gemcutter.org"]
-远程来源:
- http://gems.rubyforge.org/
- http://gems.github.com
- http://gemcutter.org
这些设置从控制台应用,但在通过apache运行时不适用。为此,您需要编辑config/environments.rb并添加

ENV['GEM_PATH'] = '/home/<usrname>/.gem/ruby/1.8:/usr/lib/ruby/gems/1.8'
ENV['GEM_PATH']='/home/.GEM/ruby/1.8:/usr/lib/ruby/gems/1.8'

您需要确保此处设置为GEM_路径的内容与GEM env命令的输出内容相匹配。

问题可能在于您的行将RAILS_env设置为“stage”。仅当尚未定义RAILS_ENV时,您使用的| |=赋值才会设置值。在这种情况下,甚至在点击应用程序之前,DH就已经将RAILS|u ENV设置为“production”,因此| |=分配没有效果

要了解这是否真的是问题所在,请查看您的日志目录-您可能会在stage.log中找到production.log,并且没有任何条目(除了运行脚本/控制台时产生的条目),因为您的应用程序正在(无意中)作为生产运行

解决此问题的一种方法是将行更改为:

ENV["RAILS_ENV"] = "stage"

我的gem版本与你的版本唯一的不同是这个RUBY版本:1.8.5(2006-08-25)[x86_64-linux]我在stage.rb文件中添加了ENV['gem_PATH']='/home//.gem/RUBY/1.8:/usr/lib/RUBY/gems/1.8'行,并再次运行该网页,结果相同。500错误,没有日志信息。忘记说DreamHost使用乘客。明显的问题。。。您将用户名输入,然后重新启动应用程序(
touch tmp/restart.txt
)?你也检查了logs/stage.log了吗?是的,我用了真实的用户名而不是。愚蠢的问题。我使用Mongrel运行我的本地dev。tmp文件夹中没有restart.txt。这是否意味着我需要在/tmp文件夹中创建restart.txt文件?我假设你指的是rails/tmp文件夹。此外,在浏览浏览器时,没有任何内容写入log/stage.log。仅当我通过控制台运行应用程序时。在您的rails目录中,只需触摸tmp/restart.txt,在下一次请求应用程序时,乘客将重新启动它。至于日志,当您通过浏览器运行时,是否有任何日志被写入?