Сервер Rails зависает при вызове созданного мной метода User.Нет ошибок, и я не знаю, как это проверить - PullRequest
1 голос
/ 27 сентября 2011

Я называю этот метод (также с вспомогательным методом, подробно описанным ниже), определенный в модели User.rb

def get_random_items
return nil unless groups_as_member
if groups_as_member == 1
  assignments = groups_as_member.assignments.limit(5)
  random_items = Post.rand_by_post(assignments)
end
random_groups = groups_as_member.sort_by{rand}.slice(0,5)
random_items = Array.new
i=0
return unless random_groups
until i == 10 do
  random_groups.each do |group|
    assignments = group.assignments.limit(5)
    if y = Post.rand_by_post(assignments)
      random_items << y
      i+=1
      if random_items == 5
        return random_items
      end
    else
      return random_items
    end
  end
end

return random_items
end

вспомогательный метод rand_by_post в Post.rb

def self.rand_by_post(assignments)
  find_by_id(assignments.rand.post_id)
end

в пользовательском контроллере show действие:

def show
@public_groups = Group.public
@groups_member = @user.groups_as_member
@groups_as_owner = @user.groups_as_owner

@random_items = @user.get_random_items
end

Когда я закомментирую вызов в действии пользовательского шоу, пользовательское шоу отлично работает на моем сервере разработки и производства. Но когда я пытаюсь использовать метод, серверы просто зависают, ничего не делая. Я не могу найти никаких ошибок в журналах сервера или журналах heroku. Мои навыки написания тестов довольно ограничены, и у меня возникают проблемы при написании одного из них для всего метода. Кто-нибудь может определить проблему?

1 Ответ

2 голосов
/ 27 сентября 2011

если ваш random_groups пуст, ваш вспомогательный метод get_random_items перейдет в бесконечный цикл until i == 10 do ... end. Это может быть причиной.

Возможно, вы захотите изменить return unless random_groups на return if random_groups.empty?

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