Ответы пользователя по тегу Ruby on Rails
  • Проблемы с документацией. Локомотив Rails не едет, или машинист плохой?

    @raventid
    Мой вариант такой - rubyonrails.org/documentation

    Если нужно что-то почитать в общем виде (models, views, controllers, sockets), то искать нужно в guides, они очень детальные.

    Если нужна еще более детальная информация, то смотреть нужно в api. (например, я хочу получить подробную информацию о миграциях, в поиске слева наверху api.rubyonrails.org я пишу migration и выбираю ActiveRecord::Migration)

    Ну и последняя инстанция это исходный код Rails
    Ответ написан
    Комментировать
  • Еще раз e-commerce на Rails?

    @raventid Автор вопроса
    На конец 2015 года Spree прекратила поддержку своего проекта на гитхабе - смотрим и ипользуем Solidus
    Ответ написан
  • Многопоточность и long polling в Ruby on Rails, почему засыпает главный поток?

    @raventid
    Насколько я понимаю вы просто пытаетесь установить временной лимит на запрос к бд. В конфиге Rails можно установить таймаут в 30 секунд :) Смотрите здесь . Еще можно будет поймать исключение по таймауту и отрендерить код ошибки и сообщение. Не вижу особого смысла в создании треда. Кстати, еще посмотрите на то как работает ActiveRecord и ее пул, она очень многие штуки умеет делать в том числе с участием потоков.

    Да, еще webrick однопоточный парень и лучше его не мучайте, для разработки установите thin.

    P.S. Я попробовал немного переписать ваш метод и запустить без рельс - все работает, и в целом логично :)
    Ответ написан
    3 комментария
  • Тестирование nested ресурсов?

    @raventid
    Насколько я понимаю у вас есть контроллер AnswersController? И он управляет ресурсом ответы. Если так, то да, пишите тесты контроллера на него в файлик answers_controller_spec.rb, например создание с помощью аякса можно протестировать так

    answers_controller_spec.rb

    describe 'POST #create' do
        sign_in_user
    
        context 'with valid attributes' do
          it 'saves answer in database' do
            expect { post :create, question_id: question, answer: attributes_for(:answer), format: :js }.to change(question.answers, :count).by(1)
          end
    
          it 'assigns answer with current user' do
            post :create, question_id: question, answer: attributes_for(:answer), format: :js
            assigning_answer = assigns(:answer)
            expect(assigning_answer.user_id).to eq subject.current_user.id
          end
    
          it 'render create template' do
            post :create, question_id: question, answer: attributes_for(:answer), format: :js
            expect(response).to render_template :create
          end
        end


    И не забудьте уделить особое внимание акцептанс спекам и тестам модели. Тесты контроллера не самое главное :)
    Ответ написан
    4 комментария