rspec игнорирует skip_before_filter?

У нас странная проблема. В контроллере приложения у нас есть набор before_filter, который требует аутентификации с помощью devise и при необходимости перенаправляет на страницу входа.

В нашем контроллере библиотеки мы пропускаем этот before_filter.

skip_before_filter :authenticate_user!, :only => :show

Когда мы запускаем простой функциональный тест с capybara и rspec, тест проваливается.

it "should get only english articles within the category 'computers'" do
    visit '/en/library/computers'
    page.should have_content('computers')
end

Похоже, что этот фильтр не пропускает. Содержимое страницы - это содержимое страницы входа в систему.

Когда мы запускаем его с rails server, он работает нормально.

Есть идеи, почему он так себя ведет или что искать, чтобы решить эту проблему?

UPDATE:

Возможно, стоит добавить, что это происходит только в Linux. Под MacOS 10.7 с "той же" настройкой все работает нормально.

Код контроллера:

class Library::CategoriesController < ApplicationController
  skip_before_filter :authenticate_user!, :only => [:show]

  # GET /categories/1
  # GET /categories/1.json
  def show

    @categories = Category.all
    @category = Category.find(params[:id])

    @articles = @category.articles.where(:locale => I18n.locale)
    respond_to do |format|
      format.html # show.html.erb
    end
  end
end

Application_controller выглядит так (без set_i18n_locale_from_url):

class ApplicationController < ActionController::Base
  protect_from_forgery
  before_filter :set_i18n_locale_from_url, :authenticate_user!
end

Маршруты:

namespace :library do
  get '/' => 'library#index', :as => 'library'
  resources :categories, :path => '', :only => [:show]
  resources :categories, :path => '', :only => []  do
    resources :articles, :path => '', :only => [:show]
  end
end
5
задан NielsH 9 March 2012 в 11:25
поделиться