2012-07-23 75 views
0

我试图在我的VPS上部署我的第一个Rails 3.x应用程序,但这并不是很成功。在我的VPS我使用Apache和乘客,但是当我启动应用程序,我得到这样的错误:使用RVM所需的Ruby版本无法启动Rails应用程序?

/var/www/my_domain_name/sample_app/config/initializers/wrap_parameters.rb:8: syntax error, unexpected ':', expecting kEND wrap_parameters format: [:json]^

与回溯:

0 /usr/lib64/ruby/gems/1.8/gems/activesupport-3.2.6/lib/active_support/dependencies.rb 245 in `load' 
1 /usr/lib64/ruby/gems/1.8/gems/activesupport-3.2.6/lib/active_support/dependencies.rb 245 in `load' 
2 /usr/lib64/ruby/gems/1.8/gems/activesupport-3.2.6/lib/active_support/dependencies.rb 236 in `load_dependency' 
3 /usr/lib64/ruby/gems/1.8/gems/activesupport-3.2.6/lib/active_support/dependencies.rb 245 in `load' 
4 /usr/lib64/ruby/gems/1.8/gems/railties-3.2.6/lib/rails/engine.rb 588 
5 /usr/lib64/ruby/gems/1.8/gems/railties-3.2.6/lib/rails/engine.rb 587 in `each' 
6 /usr/lib64/ruby/gems/1.8/gems/railties-3.2.6/lib/rails/engine.rb 587 
7 /usr/lib64/ruby/gems/1.8/gems/railties-3.2.6/lib/rails/initializable.rb 30 in `instance_exec' 
8 /usr/lib64/ruby/gems/1.8/gems/railties-3.2.6/lib/rails/initializable.rb 30 in `run' 
9 /usr/lib64/ruby/gems/1.8/gems/railties-3.2.6/lib/rails/initializable.rb 55 in `run_initializers' 
10 /usr/lib64/ruby/gems/1.8/gems/railties-3.2.6/lib/rails/initializable.rb 54 in `each' 
11 /usr/lib64/ruby/gems/1.8/gems/railties-3.2.6/lib/rails/initializable.rb 54 in `run_initializers' 
12 /usr/lib64/ruby/gems/1.8/gems/railties-3.2.6/lib/rails/application.rb 136 in `initialize!' 
13 /usr/lib64/ruby/gems/1.8/gems/railties-3.2.6/lib/rails/railtie/configurable.rb 30 in `send' 
14 /usr/lib64/ruby/gems/1.8/gems/railties-3.2.6/lib/rails/railtie/configurable.rb 30 in `method_missing' 
15 /var/www/slovnyky.com/sample_app/config/environment.rb 5 
16 config.ru 3 in `require' 
17 config.ru 3 
18 /usr/lib64/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/builder.rb 51 in `instance_eval' 
19 /usr/lib64/ruby/gems/1.8/gems/rack-1.4.1/lib/rack/builder.rb 51 in `initialize' 
20 config.ru 1 in `new' 
21 config.ru 1 

我想通了,这个问题可能是错误的Ruby版本,因为1.8.7不能正确识别一些散列语法。但这很奇怪,因为它不应该使用预装的Ruby 1.8.7,而是1.9.3。在我的CentOS 6.2我安装RVM和Ruby 1.9.3,所以我有这样的:

ruby -v 
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux] 
rvm list 
rvm rubies 
=* ruby-1.9.3-p194 [ x86_64 ] 
# => - current 
# =* - current && default 
# * - default 

所以这是奇怪的是,我得到:

sudo ruby -v 
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux] 

这就是为什么我认为,由于某种原因,旅客选秀权错误的Ruby版本。当我尝试启动服务器时,如:

rails server 

它的工作原理和我可以通过MY_IP:3000访问我的应用程序没有任何问题。

所以问题是:我如何让Passenger加载需要的Ruby版本,而不是预装的?

这就是Apache的error_log的尾巴重新启动后:

[Thu Jul 26 20:29:10 2012] [notice] caught SIGTERM, shutting down 
[Thu Jul 26 20:29:11 2012] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec) 
[Thu Jul 26 20:29:11 2012] [notice] Digest: generating secret for digest authentication ... 
[Thu Jul 26 20:29:11 2012] [notice] Digest: done 
[Thu Jul 26 20:29:11 2012] [notice] Apache/2.2.15 (Unix) DAV/2 Phusion_Passenger/3.0.12 PHP/5.3.3 configured -- resuming normal operations 

回答

0

尝试启动生产服务器

bundle exec [command] 

应该采取的依赖护理。

+0

你会如此善良,写更多细节我必须做什么?我在部署应用程序后运行了bundle install。我也尝试过运行bundle exec install,但那样就犯了错误。 – kovpack 2012-07-24 17:01:01

+0

您用来运行乘客的命令是什么?我使用精简而不是命令来启动瘦是捆绑exec瘦启动-C thin.yml。用您的乘客启动命令替代[命令]。 – Bryan 2012-07-24 18:07:48

+0

它自动启动(我使用Apache的乘客)。 – kovpack 2012-07-24 18:58:17

1

在apache配置中选中“PassengerRuby”选项。该选项允许指定要使用的Ruby解释器。来源:Configuring Phusion Passenger

+0

我已经尝试添加PassengerRuby /usr/local/rvm/rubies/ruby-1.9.3-p194/bin/ruby,但仅限于httpd.conf(没有更改)。然后尝试将PassengerRuby添加到passenger.conf并重新启动Apache,并且它做了一些事情,但应用程序仍然无法正常工作。我得到错误:“应用程序spawner服务器意外退出:检测到意外的文件结束。”然后我查看了Apache错误日志,发现了这样一行:“您可能遇到了Ruby解释器或扩展库中的错误。”我试图重新安装红宝石 - 没有帮助。但我可以运行rails服务器和应用程序的作品。有任何想法吗? – kovpack 2012-07-24 17:06:41

+0

你是否预先编译资产?执行'''rake资产:预编译''' – kanfet 2012-07-24 17:53:05

+0

我试过了,结果证明我有一些css合并问题。我解决了它,成功预编译了资源,但错误仍然存​​在:“应用程序spawner服务器意外退出:检测到意外的文件结束。”这是我现在得到的[应用程序错误](http://slovnyky.com/) – kovpack 2012-07-24 18:29:20