Rails - как я могу запросить базу данных без касания таблицы сессий - PullRequest
0 голосов
/ 17 мая 2010

Я пытаюсь предоставить HTTP API для моего приложения, которое запрашивает базу данных, доступную только для чтения (для целей репликации). Я обнаружил, что мое приложение несколько раз падает при выполнении запроса, поскольку вызов пытается обновить таблицу сессий всякий раз, когда я запрашиваю базу данных. Этого не происходит, когда я возвращаю некоторый текст, не обращаясь к базе данных за информацией.

class APIController < AplicationController

  def view
    data = Product.find(params[:id]).to_json # will fail
    data = { :one => 1, :two => 2 }.to_json  # will succeed

    respond_to do |format|
      format.html { render :json => data }
    end
  end  

end

Как мне ограничить его от прикосновения к таблице сеансов по этому запросу (в настоящее время он выдает UPDATE в поле updated_at для этого сеанса). спасибо.

Ответы [ 2 ]

1 голос
/ 17 мая 2010

Какая версия Rails это?В Rails 2.3 сессии загружаются лениво, поэтому проверьте ApplicationController и ваши плагины на наличие кода (вероятно, в before_filter), который обращается к любому значению в вашем сеансе.Вы хотите избежать этого фильтра для этого действия view.

1 голос
/ 17 мая 2010

Используете ли вы сеанс в этом запросе?например для аутентификации.Это может быть проблемой.

Вы можете отключить сеанс для контроллера и / или действия:

class MyController < ApplicationController
  session :off, :only => :view

  ...

end

Работает так же, как обычные фильтры контроллера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...