Наверное, имеется в виду, что совершенно естественная для кого-то методика «написал черновик — отложи в стол — вернись через некоторое время» для прекрастинаторов не работает, потому что для них противоестественна сама идея не сделать что-либо сразу. Отсюда рождается категоричное представление, что если не делаешь сразу, то прокрастинируешь. Хотя на самом деле, причина банально в том, что нам нужно время на осмысление задачи, и в том, что в стрессовой ситуации, нагнетаемой искусственным дедлайном, мозг включает совершенно другие механизмы, чем в спокойной обстановке. Поэтому и не может идти речи о креативности. Всегда полезно выдохнуть и расслабиться, если только речь не идёт о бегстве из горящего дома, конечно. :-)
Мне кажется, сложно рассуждать о мотивации в третьем лице, да ещё и говоря о группе людей. Своя-то личная, истинная мотивация, далеко не всегда бывает понятна. Сколько заблуждений вокруг действительных потребностей!
Пример: кажется, что хочется зарабатывать много денег, а на самом деле — хочется не голодать. Т.е. первичной мотивацией тут вообще страх остаться голодным является, а много денег — это всего лишь способ этот страх задвинуть поглубже. Если в сторону отодвинуть существующее представление о том, что такое это «не голодать», то может и более простой путь найтись к удовлетворению этой потребности. Домик в деревне, например, или свой огород.
Мне кажется, статья именно об этом: нужно выявлять свою истинную мотивацию и действовать в соответствии с ней. Это непросто, но чует моё сердце, что заработать много денег гораздо проще, когда понятно, для чего ты их зарабатываешь. Вы с этим не согласны?
Суть критики в том, что фрэймворк (библиотека) изменяет базовые классы языка (платформы), на котором он написан. Добавление метода как такового не страшно, страшно, что посредством monkey patching может и подменить метод (как показано в комментарии выше). А это сломает другие библиотеки, полагающиеся на этот базовый метод.
Разработчики сторонних библиотек могут вообще не знать про Rails и уж точно не должны адаптировать свои творения под подобные патчи. Да и разве за всем уследишь?
Спасибо, за то, что поделились своим опытом. Именно на это я и рассчитывал, публикуя сей опус. :-)
Тесты контроллеров, как правило, не окупают себя — они пишутся дольше всего и наиболее чувствительны к изменением тестируемого кода. Лично по мне — в рельсах лучше максимально отказаться от тестов контроллеров (оставить только там где это необходимо), а писать интеграционные тесты — т.е. именно слать запросы get, put, post, delete и т.д. на нужные адреса, либо кликать по ссылкам.
Полностью поддерживаю. Именно поэтому и появился этот мета-тест, ибо на мой взгляд проверка того, что приложение отфутболивает при отсутствии credentials, является crucial part, а остальное, может быть, и не надо совсем. Покроется интеграционными тестами. Другой вопрос, что и этот тест, вероятно, следовало бы сделать интеграционным, а не ориентированным на контроллеры, но суть от этого не меняется.
2. Лучше всё же shared examples. Решается просто — весь общий код пишется, собственно, в него, а нужные переменные передаются через let
Если я правильно понимаю, придётся тогда городить «расширение» этих shared examples для каждого контроллера, а я вообще не хочу писать спеки для контроллеров. Написал один раз и забыл (ну или почти забыл).
Непонятные тесты, которые дают 100% покрытия
То есть, этот тест непонятный? У меня-то как раз сложилось обратное представление: вся суть в самом последнем describe и двух context, и эти блоки почти ничем не отличаются от тех, что я писал отдельно для каждого контроллера. Разве что
before { self.controller = c.new }
может вызывать вопросы при первом взгляде, но с учётом других преимуществ (возможности не писать спек-файл для каждого нового контроллера), на мой взгляд, представляет собой неплохой компромисс.
Вопрос читаемости кода очень субъективный. И автору этого кода нечитаемость становится очевидна обычно не сразу. Мне довелось не так давно встретитить вот такую конструкцию в тестах на TestNG, например:
Никакой другой реакции кроме WAT?! на это, по-моему, быть не может, хотя, уверен, автору казалось всё кристально чистым, когда он это создавал. А мне даже статью написать захотелось на тему, как загубить идею, ведь это уже не первое подобное использование концепции DataProvider, которое я встречаю.
Слышали, но на тот момент я уже был охвачен идеей написать мета-тест. Буду благодарен, если приведёте пример, как эту же проблему решить с помощью shared examples.
Конечно, можно сделать одну проверку в коде или запихнуть before_action в ApplicationController (и добавить skip_before_action, где проверять не надо). Но это же implementation detail! Я хотел своего рода отчёт, который показывает, что (почти) каждый URL, которым приложение смотрит наружу, требует передачи access token. Не должны тесты знать, как устроена проверка внутри — они должны просто показывать, что всё работает, как ожидается. А как это сделать, не дёргая каждый URL?
В приведённом Вами тикете, кстати, DHH придерживается сходной точки зрения. Так что я грядущие изменения поддерживаю обеими руками.
Конечно, я не меняю эту функциональность в каждом контроллере, да и проверка в них сводится к тому, чтобы упомянуть методы в before_action. Но это надо не забыть сделать. Такой тест — хороший способ быть уверенным в том, что не забыл.
А можете просвятить, что это за направление, избранное командой RoR, из-за которого спеки контроллеров ждёт печальная участь?
Наверное, имеется в виду отсутствие необходимости поднимать и конфигурировать свой собственный web-сервер для запуска ядра приложения типа Puma/Passenger, Tomcat/JBoss и иже с ними (и ещё NGinx/HAProxy поверху). Вся эта инфраструктура уже предоставляется AWS (включая и физические сервера — куда же без них), а задача разработчика сводится к тому, чтобы оформлять решения поставленных задач в виде кода, скармливая его Amazon.
Таким образом, из классического понимания разработки клиент-серверного приложения «сервер» как будто исчезает (остаётся только приложение), хотя физически он никуда не денется, конечно.
Всё дело в том, что мне не нужно ничего вам доказывать. Это вы высказали некоторую позицию, не подтвердив её ни единым фактом, а вместо подтверждения приводите ещё больше разнообразных домыслов, каждый из которых можно подвергнуть сомнению, раздув эту дискуссию до размеров Вселенной. Да ещё и с меня требуете доказательств полезности действий РКН, приписывая моим словам свои собственные размышления. Ни в одном своём сообщении не говорил я ни о полезности, ни о безвредности действий государственных структур.
Ответ у меня только один: оставайтесь при своём мнении. Имеете полное право. Всего доброго!
Фактов вы намешали в одном сообщении целую кучу. РКН выполняет закон. Депутаты приняли закон. Президент подписал закон. Всё это — факты, всем хорошо известные, никоим образом вашу точку зрения не подтверждающие, но вы приводите их, для того чтобы придать своим словами эмоциональную окраску, заставить тех, кто читает ваш комментарий, с вами не единожды согласиться. Для того, чтобы затем с лёгкостью продать им совершенно не имеющую к этим фактам отношения идею. Это известный психологический приём. Сознательно или подсознательно вы это делаете — другой вопрос.
Вся проблема в том, что и вы точно так же не называете вещи своими именами. И точно так же формируете выгодное вам (а не читателям) конкретное подсознательное отношение к РКН и прочим государственным структурам. Более того, ещё и пытаетесь убедить всех в том, что мы тут жертвы, РКН с нами враждует и всё такое. Не надо так.
Я снова повторю, что ваша точка зрения имеет право на существование. Хочу лишь подчеркнуть, что это не истина, более того, это очень слабая позиция. Но пусть. Каждому своё.
Это называется передёргиванием фактов. И уж совершенно точно никоим образом не подтверждает слова о том, что врагом РКН являются граждане РФ. Просто набор разнообразных домыслов. Даже читать такое странно.
Моя критика была направлена на то, что, обвиняя автора статьи в выражении своих мыслей посредством неподходящих под ваши убеждения речевых оборотов, вы тут же на пустом месте начали создавать иллюзию того, что граждане РФ являются врагом каких-то там служб. Я даже признаю, что эта точка зрения имеет право на существование, но так ли уж необходимо на фоне позитивной, в общем-то, новости, делать вклад в формирование образа угнетающих народ государственных структур? Кому от этого легче-то станет?
Бесспорно, стоящим у руля не откажешь в наличии интеллекта. Следует помнить только то, что указания заблокировать тот или иной сайт отдают не те, кто командует парадом, а рядовые исполнители. Принцип Хэнлона применять следует именно к ним.
Как раз те, кто стоит у руля, хорошо понимают, какой эффект может принести блокировка Википедии или подобных ей популярных ресурсов. И, скорее всего, как раз от них идёт команда Википедию не блокировать. Именно в силу тех самых указанных вами причин.
Есть такой философский принцип под названием Бритва Хэнлона: «Никогда не приписывайте злому умыслу то, что вполне можно объяснить глупостью» (да-да, это из Википедии). Действия РКН не направлены ни против сайта, ни против граждан РФ. Действия РКН направлены на формальное соблюдение закона. И надо отдать им должное, что просто так шашкой направо и налево они не ходят и не махают. Википедия осталась незаблокированной.
Употребляя такие обороты как в комментарии, вы создаёте иллюзию, что врагами РКН и других подобных организованных группировок являются россияне и что у них вообще есть враг. Это может быть вашей точкой зрения, но не надо её возводить в ранг истины. Это необоснованное и голословное утверждение.
Там не нарисована тильда, но в Idea эта комбинация действительно работает. В Сафари и Файндере — нет. Я думал, это Jetbrains придумали для своего софта.
Пример: кажется, что хочется зарабатывать много денег, а на самом деле — хочется не голодать. Т.е. первичной мотивацией тут вообще страх остаться голодным является, а много денег — это всего лишь способ этот страх задвинуть поглубже. Если в сторону отодвинуть существующее представление о том, что такое это «не голодать», то может и более простой путь найтись к удовлетворению этой потребности. Домик в деревне, например, или свой огород.
Мне кажется, статья именно об этом: нужно выявлять свою истинную мотивацию и действовать в соответствии с ней. Это непросто, но чует моё сердце, что заработать много денег гораздо проще, когда понятно, для чего ты их зарабатываешь. Вы с этим не согласны?
Разработчики сторонних библиотек могут вообще не знать про Rails и уж точно не должны адаптировать свои творения под подобные патчи. Да и разве за всем уследишь?
Полностью поддерживаю. Именно поэтому и появился этот мета-тест, ибо на мой взгляд проверка того, что приложение отфутболивает при отсутствии credentials, является crucial part, а остальное, может быть, и не надо совсем. Покроется интеграционными тестами. Другой вопрос, что и этот тест, вероятно, следовало бы сделать интеграционным, а не ориентированным на контроллеры, но суть от этого не меняется.
Если я правильно понимаю, придётся тогда городить «расширение» этих shared examples для каждого контроллера, а я вообще не хочу писать спеки для контроллеров. Написал один раз и забыл (ну или почти забыл).
То есть, этот тест непонятный? У меня-то как раз сложилось обратное представление: вся суть в самом последнем describe и двух context, и эти блоки почти ничем не отличаются от тех, что я писал отдельно для каждого контроллера. Разве что
может вызывать вопросы при первом взгляде, но с учётом других преимуществ (возможности не писать спек-файл для каждого нового контроллера), на мой взгляд, представляет собой неплохой компромисс.
Вопрос читаемости кода очень субъективный. И автору этого кода нечитаемость становится очевидна обычно не сразу. Мне довелось не так давно встретитить вот такую конструкцию в тестах на TestNG, например:
Никакой другой реакции кроме WAT?! на это, по-моему, быть не может, хотя, уверен, автору казалось всё кристально чистым, когда он это создавал. А мне даже статью написать захотелось на тему, как загубить идею, ведь это уже не первое подобное использование концепции DataProvider, которое я встречаю.
В приведённом Вами тикете, кстати, DHH придерживается сходной точки зрения. Так что я грядущие изменения поддерживаю обеими руками.
А можете просвятить, что это за направление, избранное командой RoR, из-за которого спеки контроллеров ждёт печальная участь?
http://www.banki.ru/wikibank/bankomat_s_funktsiey_kesh-resayklinga/
Таким образом, из классического понимания разработки клиент-серверного приложения «сервер» как будто исчезает (остаётся только приложение), хотя физически он никуда не денется, конечно.
Ответ у меня только один: оставайтесь при своём мнении. Имеете полное право. Всего доброго!
Вся проблема в том, что и вы точно так же не называете вещи своими именами. И точно так же формируете выгодное вам (а не читателям) конкретное подсознательное отношение к РКН и прочим государственным структурам. Более того, ещё и пытаетесь убедить всех в том, что мы тут жертвы, РКН с нами враждует и всё такое. Не надо так.
Я снова повторю, что ваша точка зрения имеет право на существование. Хочу лишь подчеркнуть, что это не истина, более того, это очень слабая позиция. Но пусть. Каждому своё.
Моя критика была направлена на то, что, обвиняя автора статьи в выражении своих мыслей посредством неподходящих под ваши убеждения речевых оборотов, вы тут же на пустом месте начали создавать иллюзию того, что граждане РФ являются врагом каких-то там служб. Я даже признаю, что эта точка зрения имеет право на существование, но так ли уж необходимо на фоне позитивной, в общем-то, новости, делать вклад в формирование образа угнетающих народ государственных структур? Кому от этого легче-то станет?
Как раз те, кто стоит у руля, хорошо понимают, какой эффект может принести блокировка Википедии или подобных ей популярных ресурсов. И, скорее всего, как раз от них идёт команда Википедию не блокировать. Именно в силу тех самых указанных вами причин.
Употребляя такие обороты как в комментарии, вы создаёте иллюзию, что врагами РКН и других подобных организованных группировок являются россияне и что у них вообще есть враг. Это может быть вашей точкой зрения, но не надо её возводить в ранг истины. Это необоснованное и голословное утверждение.