Подпишитесь на рассылку о самых интересных материалах в мире веб-разработки :)

Обертка для итератора


(Kvokka) #61

основа- это cancan и pundit, где первый даст потом огромный класс, который будет справедливо обхаян тем же rubycritic. pundit более красив в этом, мне он ближе

всегда можно взять warden, как наиболее примитивное нечто. на сколько я помню, под капотом cancan именно он. хотя, повторюсь, я был за pundit. хотя и юзал его последний раз примерно 2 года назад, а ныне все конторские велосипеды.


#62

мне казалось, что cancan давно мертв, вместе с третьими рельсами, почему и пробовал cancancan.

И вот что еще… не подкинешь ли векторных идей, а я попробую реализовать? Хотелось бы сделать в ЛК юзверя симулятор вот такой консоли, как на видео. Понятно, что это не лог, это я puts прописывал в контроллере когда кодил, после экшенов, для дебага и наглядности. Всяких-разных jquery-console как грязи, да можно и на css, вопрос не в этом. Раздумываю, как выводить подобный список действий в контексте только текущего пользователя… чего думаешь? Уж больно капризен Twitter API, врет-не-врет, но и правды не говорит. Живет своей жизнью, зараза… Хотелось бы выводить юзверям инфу о технических действиях, предпринимаемых софтиной именно в плане его твиттер-акка, и никаких других. Что думаешь? Планирую пока что использовать devise, active_admin, cancancan.


(Kvokka) #63

c cancan у тебя потом будет супержирный блок, на который будет рубокоп ругаться. и который не разбить красиво. так-то и фиг с ним. оттого и pundit

вывод вскгого такого барахла придется делать асинхронно, тоесть у тебя все эти запросы прут в очередь и оттуда уже через js обратно вываливаются. если ты совсем модный, то у тебя еще и какая-то хрень для очереди будет, типа rabbitmq. но, это если ты действительно любишь боль


#64

Когда приложение в режиме твиттер-бота начинает ретвитить найденные по заданным хештегам твиты, довольно быстро получаю

ActionDispatch::Cookies::CookieOverflow in TweetsController#index

Суть здесь, в общем, понятна. Вопрос только в оптимальном решении проблемы 4кб в качестве максимального размера cookie. Что посоветуешь, @kvokka , Active Record Session Store гем или что-то иное?

Или, может, снова rescue и ну его нах? :slight_smile: Really, чешу репу.

P.S. Хотя, в свете происходящего во ВКонтакте, даже и не знаю, оставить ли авторетвиты в проге или убрать этот функционал подобру-поздорову… это ж черт знает что из этого выйдет, учитывая конъюнктуру многочисленных расейских судебных процессов “по ретвитам”. Одна надежда, что Твиттер - не говноВКонтакте… ну да все равно, в качестве технической проблемы вопрос интересен.

P.P.S. ДОжили @ля. Пушистый арктический песец.


(Kvokka) #65

если ты в куки гадишь много и жирно, то надо либо прибираться, либо перенастроить контроллер чтобы все было прилично. в любом случае тебе http://api.rubyonrails.org/v5.0/classes/ActionDispatch/Cookies.html сюда и либо запилить expired_at либо чистить руками, либо найти чтобы аккуратно прибирался сам контроллер. за 2 минуты как это сделать я не смог, а выбор между жрачкой с киношкой и кукисами не в пользу последних

на твоем месте я бы это делал как тестовое задание без какого-то продакшена. залочуть и хорошо если только аппу, а то и тебя, как ты сам подметил. не надобно с бешеным принтером заигрывать. ну или в начале трактор, граница… ну ты понел…


#66

оптимальное средство, походу: a session store backed by an Active Record class. Говорят, кто-то получает ошибку null value in column “session_id” violates not-null constraint , но у меня все запустилось без особых проблем. Если не считать за неудобство необходимость время от времени запуска db:sessions:trim - отличная имхо весчь.


(Kvokka) #67

ну если на производительно пофиг, то тогда норм. для эксперимента уж точно норм.
просто все эти сохранения сессии в базе - это как-то не верно, канеш.
похорошему, конечно, я бы все это перенаправил в какой-то вид кеша.
но, если нагрузка низкая и всем насрать то и зашибись. нефиг решать проблему пока ее нет :wink:

красава, что разобрался


#68
  1. rubocop прикольный… я раньше не использовал. Пишу в итераторе условие, if, а он переписывает на next unless. Как думаешь, не опасно ему доверять подобное, я имею в виду

rubocop -a

?
помнится, порой начнешь онлайн в вебе код форматить, глядишь - херак - а он после этого не работает…
Нет, пока все четко. Тестирую как раз.

  1. Код у меня уже сполна ветвится, DRYить надо. Я большую часть в concerns запихал пока, с пыха обожаю куски кода инклюдить… оно и в тему. Правда, на рельсах с этим сложнее. Метод у меня содержит ряд вложенных методов, я бы с удовольствием это инклюдил модулями, да еще и в зависимости от условий. Но вот ведь незадача. Вне метода не работает elsif, а внутри метода не работает include… как справиться с этим противоречием?

(Kvokka) #69

1- когда рубокоп накатывал только (что приходилось делать на нескольких проектах), то был там 1 баг, когда изменилась логика. но, это было быстро исправлено, и если брать версию не напрямую с гита, то имхо норм. рубокоп крут! потом привыкаешь к автозамене и пишешь как курица лапой. но все ровно на выходе красиво :wink: чит жеж

2-если запилил ты какой-то супер-мега-метод, то порой его можно выделить в отдельный класс, куда в качестве стартового контекста ты будешь вводить builder переменную, и отдавать туда self из класса вызова.
вообще include зачастую больше засоряет чем чистит. старайся бить на классы, а не на модули (это не панацея, просто часто так правильнее, особенно после пыхи)