我试图在我的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
你会如此善良,写更多细节我必须做什么?我在部署应用程序后运行了bundle install。我也尝试过运行bundle exec install,但那样就犯了错误。 – kovpack 2012-07-24 17:01:01
您用来运行乘客的命令是什么?我使用精简而不是命令来启动瘦是捆绑exec瘦启动-C thin.yml。用您的乘客启动命令替代[命令]。 – Bryan 2012-07-24 18:07:48
它自动启动(我使用Apache的乘客)。 – kovpack 2012-07-24 18:58:17