0

初めての Rails 3.x アプリを VPS にデプロイしようとしましたが、うまくいきませんでした。私の VPS では Apache と Passenger を使用していますが、アプリケーションを起動すると次のようなエラーが発生します。

/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

1.8.7 では一部のハッシュ構文が正しく認識されないため、Ruby のバージョンが間違っている可能性があることがわかりました。しかし、これは奇妙です。プリインストールされている 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]

これが、何らかの理由で Passenger が間違った Ruby バージョンを選択したと私が考える理由です。次のようにサーバーを起動しようとすると:

rails server

それは機能し、問題なく MY_IP:3000 経由でアプリケーションにアクセスできます。

問題は、プリインストールされているバージョンではなく、必要な Ruby バージョンを Passenger に読み込ませるにはどうすればよいかということです。

これは、再起動後の 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
4

2 に答える 2

1

apache config の" PassengerRuby " オプションを確認してください。このオプションを使用すると、使用する Ruby インタープリターを指定できます。ソース: Phusion Passenger の構成

于 2012-07-23T20:30:14.487 に答える
0

本番サーバーを起動してみてください

bundle exec [command]

依存関係を処理する必要があります。

于 2012-07-23T19:42:55.933 に答える