Выполнено 500 Внутренняя ошибка сервера; RestClient::NotAcceptable (406 Недопустимо)

Я довольно новичок в Rails и в stackru, поэтому я попытаюсь объяснить. Я просил изменить чей-то проект, поэтому я беру исходники и пытаюсь заставить его работать на моем собственном рабочем компьютере (это на Windows...), чтобы проверить его на моем локальном браузере (cf: rails s). Предполагается, что проект работает, потому что он уже находится в производстве, поэтому я предполагаю, что проблема связана с моей собственной рабочей средой. После установки всех необходимых гемов, запуска комплекта установки и запуска базы данных serveur (проект использует mongodb), я запускаю rails server. Команда на самом деле работает, но как только я пытаюсь подключиться к приложению с любым браузером по адресу localhost (http://localhost:3000/), я получаю сообщение об ошибке, и я на самом деле не понимаю причину...

Вот журнал, который я получаю:


Started GET "/" for 127.0.0.1 at 2012-12-04 14:51:30 +0100
Processing by HomeController#index as HTML
** [Localeapp] 1354629090-- Handling translation updates
** [Localeapp] 1354629090 - polling
** [Localeapp] API CALL: get https://api.localeapp.com/v1/projects/hhMxHgKAzj9p1dFuS0GnTTnemJ5F9dXLDuCa1KacQSymUcmTFk/translations.yml?updated_at=1354612995
** [Localeapp] ATTEMPT 1
Completed 500 Internal Server Error in 1192ms

RestClient::NotAcceptable (406 Not Acceptable):
  rest-client (1.6.7) lib/restclient/abstract_response.rb:48:in `return!'
  rest-client (1.6.7) lib/restclient/request.rb:230:in `process_result'
  rest-client (1.6.7) lib/restclient/request.rb:178:in `block in transmit'
  C:/RailsInstaller/Ruby1.9.3/lib/ruby/1.9.1/net/http.rb:745:in `start'
  rest-client (1.6.7) lib/restclient/request.rb:172:in `transmit'
  rest-client (1.6.7) lib/restclient/request.rb:64:in `execute'
  rest-client (1.6.7) lib/restclient/request.rb:33:in `execute'
  localeapp (0.5.2) lib/localeapp/api_caller.rb:66:in `make_call'
  localeapp (0.5.2) lib/localeapp/api_caller.rb:28:in `call'
  localeapp (0.5.2) lib/localeapp/api_call.rb:6:in `api_call'
  localeapp (0.5.2) lib/localeapp/poller.rb:43:in `poll!'
  localeapp (0.5.2) lib/localeapp/rails/controller.rb:14:in `handle_translation_updates'
  activesupport (3.2.3) lib/active_support/callbacks.rb:429:in `_run__744959596__process_action__507377612__callbacks'
  activesupport (3.2.3) lib/active_support/callbacks.rb:405:in `__run_callback'
  activesupport (3.2.3) lib/active_support/callbacks.rb:385:in `_run_process_action_callbacks'
  activesupport (3.2.3) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (3.2.3) lib/abstract_controller/callbacks.rb:17:in `process_action'
  actionpack (3.2.3) lib/action_controller/metal/rescue.rb:29:in `process_action'
  actionpack (3.2.3) lib/action_controller/metal/instrumentation.rb:30:in `block in process_action'
  activesupport (3.2.3) lib/active_support/notifications.rb:123:in `block in instrument'
  activesupport (3.2.3) lib/active_support/notifications/instrumenter.rb:20:in `instrument'
  activesupport (3.2.3) lib/active_support/notifications.rb:123:in `instrument'
  actionpack (3.2.3) lib/action_controller/metal/instrumentation.rb:29:in `process_action'
  actionpack (3.2.3) lib/action_controller/metal/params_wrapper.rb:205:in `process_action'
  actionpack (3.2.3) lib/abstract_controller/base.rb:121:in `process'
  actionpack (3.2.3) lib/abstract_controller/rendering.rb:45:in `process'
  actionpack (3.2.3) lib/action_controller/metal.rb:203:in `dispatch'
  actionpack (3.2.3) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch'
  actionpack (3.2.3) lib/action_controller/metal.rb:246:in `block in action'
  actionpack (3.2.3) lib/action_dispatch/routing/route_set.rb:73:in `call'
  actionpack (3.2.3) lib/action_dispatch/routing/route_set.rb:73:in `dispatch'
  actionpack (3.2.3) lib/action_dispatch/routing/route_set.rb:36:in `call'
  journey (1.0.4) lib/journey/router.rb:68:in `block in call'
  journey (1.0.4) lib/journey/router.rb:56:in `each'
  journey (1.0.4) lib/journey/router.rb:56:in `call'
  actionpack (3.2.3) lib/action_dispatch/routing/route_set.rb:600:in `call'
  omniauth (1.1.1) lib/omniauth/strategy.rb:177:in `call!'
  omniauth (1.1.1) lib/omniauth/strategy.rb:157:in `call'
  omniauth (1.1.1) lib/omniauth/builder.rb:48:in `call'
  mongoid (2.5.0) lib/rack/mongoid/middleware/identity_map.rb:33:in `block in call'
  mongoid (2.5.0) lib/mongoid.rb:133:in `unit_of_work'
  mongoid (2.5.0) lib/rack/mongoid/middleware/identity_map.rb:33:in `call'
  sass (3.2.1) lib/sass/plugin/rack.rb:54:in `call'
  warden (1.2.1) lib/warden/manager.rb:35:in `block in call'
  warden (1.2.1) lib/warden/manager.rb:34:in `catch'
  warden (1.2.1) lib/warden/manager.rb:34:in `call'
  actionpack (3.2.3) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call'
  rack (1.4.1) lib/rack/etag.rb:23:in `call'
  rack (1.4.1) lib/rack/conditionalget.rb:25:in `call'
  actionpack (3.2.3) lib/action_dispatch/middleware/head.rb:14:in `call'
  actionpack (3.2.3) lib/action_dispatch/middleware/params_parser.rb:21:in `call'
  actionpack (3.2.3) lib/action_dispatch/middleware/flash.rb:242:in `call'
  rack (1.4.1) lib/rack/session/abstract/id.rb:205:in `context'
  rack (1.4.1) lib/rack/session/abstract/id.rb:200:in `call'
  actionpack (3.2.3) lib/action_dispatch/middleware/cookies.rb:338:in `call'
  actionpack (3.2.3) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call'
  activesupport (3.2.3) lib/active_support/callbacks.rb:405:in `_run__286698992__call__202403334__callbacks'
  activesupport (3.2.3) lib/active_support/callbacks.rb:405:in `__run_callback'
  activesupport (3.2.3) lib/active_support/callbacks.rb:385:in `_run_call_callbacks'
  activesupport (3.2.3) lib/active_support/callbacks.rb:81:in `run_callbacks'
  actionpack (3.2.3) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
  actionpack (3.2.3) lib/action_dispatch/middleware/reloader.rb:65:in `call'
  actionpack (3.2.3) lib/action_dispatch/middleware/remote_ip.rb:31:in `call'
  actionpack (3.2.3) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
  actionpack (3.2.3) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  railties (3.2.3) lib/rails/rack/logger.rb:26:in `call_app'
  railties (3.2.3) lib/rails/rack/logger.rb:16:in `call'
  quiet_assets (1.0.1) lib/quiet_assets.rb:20:in `call_with_quiet_assets'
  actionpack (3.2.3) lib/action_dispatch/middleware/request_id.rb:22:in `call'
  rack (1.4.1) lib/rack/methodoverride.rb:21:in `call'
  rack (1.4.1) lib/rack/runtime.rb:17:in `call'
  activesupport (3.2.3) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
  rack (1.4.1) lib/rack/lock.rb:15:in `call'
  actionpack (3.2.3) lib/action_dispatch/middleware/static.rb:62:in `call'
  airbrake (3.1.4) lib/airbrake/rack.rb:41:in `call'
  airbrake (3.1.4) lib/airbrake/user_informer.rb:12:in `call'
  railties (3.2.3) lib/rails/engine.rb:479:in `call'
  railties (3.2.3) lib/rails/application.rb:220:in `call'
  railties (3.2.3) lib/rails/railtie/configurable.rb:30:in `method_missing'
  rack (1.4.1) lib/rack/deflater.rb:13:in `call'
  rack (1.4.1) lib/rack/content_length.rb:14:in `call'
  railties (3.2.3) lib/rails/rack/log_tailer.rb:14:in `call'
  thin (1.4.1) lib/thin/connection.rb:80:in `block in pre_process'
  thin (1.4.1) lib/thin/connection.rb:78:in `catch'
  thin (1.4.1) lib/thin/connection.rb:78:in `pre_process'
  thin (1.4.1) lib/thin/connection.rb:53:in `process'
  thin (1.4.1) lib/thin/connection.rb:38:in `receive_data'
  eventmachine-1.0.0-x86 (mingw32) lib/eventmachine.rb:187:in `run_machine'
  eventmachine-1.0.0-x86 (mingw32) lib/eventmachine.rb:187:in `run'
  thin (1.4.1) lib/thin/backends/base.rb:63:in `start'
  thin (1.4.1) lib/thin/server.rb:159:in `start'
  rack (1.4.1) lib/rack/handler/thin.rb:13:in `run'
  rack (1.4.1) lib/rack/server.rb:265:in `start'
  railties (3.2.3) lib/rails/commands/server.rb:70:in `start'
  railties (3.2.3) lib/rails/commands.rb:55:in `block in <top (required)>'
  railties (3.2.3) lib/rails/commands.rb:50:in `tap'
  railties (3.2.3) lib/rails/commands.rb:50:in `<top (required)>'
  script/rails:6:in `require'
  script/rails:6:in `<main>'


  Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/templates/rescues/_trace.erb (4.0ms)
  Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (2.0ms)
  Rendered C:/RailsInstaller/Ruby1.9.3/lib/ruby/gems/1.9.1/gems/actionpack-3.2.3/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (56.0ms)

И это контроллер, который упоминается:


class HomeController < ApplicationController
  def index
    @presenter = Home::IndexPresenter.new
    @article_presenter = Articles::IndexPresenter.new(Article.with_state(:published).last)
  end
end

Если бы кто-то мог мне помочь, это было бы очень любезно. Спросите, если я забыл упомянуть что-то. Спасибо вам.

1 ответ

Решение

Корень проблемы в том, что URL запрашивается rest_client возвращает код HTTP 406, который вы можете увидеть, запустив curlнапример,

curl --include https://api.localeapp.com/v1/projects/hhMxHgKAzj9p1dFuS0GnTTnemJ5F9dXLDuCa1KacQSymUcmTFk/translations.yml?updated_at=1354612995

(Я только что заметил, что вы находитесь в среде Windows - если у вас нет доступа к curl Есть несколько инструментов, которые вы можете установить, что позволит вам делать запросы)

Затем, в вашем контроллере, кажется, нет никакой проверки, чтобы увидеть, был ли ответ на вызов RestClient успешным (состояние 2xx) или нет. Поскольку RestClient вызывает исключение, в вашем приложении появляется ошибка 500.

Итак, если вы не уверены, почему URL не работает, вам нужно проверить API, предоставленный localeapp.com

Но, учитывая, что API является внешней службой, вы также можете добавить некоторую обработку ошибок в свое программное обеспечение. Есть несколько вещей, известных как RestClient, но если это архилока, документация предоставляет хороший пример "обработки результатов" здесь.

Другие вопросы по тегам