
Alexander
29.05.2017
15:37:15

Nikita
29.05.2017
15:37:47
ну сделай две строки

Alexander
29.05.2017
15:38:29
пришлось, но это повторение переменной, было бы круче в одну

Sergey
29.05.2017
15:39:33
@a = @a.to_i + 1

Google

Dima
29.05.2017
15:41:54
@a = @a.to_i + 1
Вот не знаю почему, но я бы так не сделал. Здесь точно надо. Нюменять название переменной
Вкусовщина конечно, но если переменная меняет тип и вообще сильно меняется и не несёт исходного значения, то лучше изменить ее имя.

Nikita
29.05.2017
15:45:29
cnt = 1.step { |i| break i if i == 5 } так можно вернуть счетчик без изменения переменных вообще

Alexander
29.05.2017
15:46:32

Nikita
29.05.2017
15:47:21
так в cnt будет результат, можешь сделать @cnt =

Alexander
29.05.2017
15:54:06

Nikita
29.05.2017
15:55:12
да я ж не настаиваю)
не подходит, ну ладно
я бы только в конструкторе инициализировал бы переменные объекта

desmond
29.05.2017
16:43:51
точнее не везде в рельсах, это метод AR, если не путаю ничего

Alexander
29.05.2017
17:09:14

Nikita
29.05.2017
17:10:12
более правильный вариант не наследование, а композиция здесь

Google

Alexander
29.05.2017
17:21:00
Что за "композиция"?

Philipp
29.05.2017
17:43:43
жесткая свяь между сущностями, где одна сущность является частью другой. Хотя это так себе объяснение, наверное
какие-то ответственности владеющей сущности могут делегироваться составной сущности

Andrey
29.05.2017
17:46:05
https://github.com/piscolomo/ruby-patterns/blob/master/README.md#composite похоже?

Philipp
29.05.2017
17:46:31
это скорее агрегат
и то, нет, не думаю что это можно отнести к агрегатам

Alexander
29.05.2017
18:02:09

Roman
29.05.2017
18:06:25
wrapper-proxy какойнить его завернуть

Alexander
29.05.2017
18:08:27

Philipp
29.05.2017
18:10:41

Roman
29.05.2017
18:15:43

Philipp
29.05.2017
18:16:08
Могу лишь предположить что разница в инкапсуляции. Наследование её по сути нарушает.

Roman
29.05.2017
18:16:38
когда говорят "предпочитайте композицию наследованию" имеют в виду "при построении своих систем", а не "при улучшении чужих"

Svetlana
29.05.2017
18:25:29
Всем привет ищу удаленщика на ruby back end , подробно в личку

Nikita
29.05.2017
19:12:28

Roman
29.05.2017
19:13:46
а ну значит я таки подсознательно прав :)

Alexander
29.05.2017
21:24:20

Nikita
29.05.2017
21:27:41
если у объекта правильный интерфейс, то проксировать там мало что нужно. Ну а если неправильный, то есть method_missing

Google

Nikita
29.05.2017
21:28:21
я тут разбрасываюсь немного «правильный»/«неправильный», но все же

Alexander
29.05.2017
21:28:27
Третий раз задаю этот вопрос ?

Nikita
29.05.2017
21:30:12
я как бы попытался намекнуть на инкапсуляцию, интерфейсы, SOLID и прочее, у меня нет времени детально объяснять чем это лучше, чем расширение через наследование

ojab
29.05.2017
21:39:44

Alexander
29.05.2017
21:40:21

Nikita
29.05.2017
21:47:45
то есть очевидной выгоды всё-таки нет?
очевидность субъективна, скажем так, композиция должна быть вариантом по умолчанию, потому что в большинстве случае ее 1) достаточно, 2) нужно меньше думать о том что там внутри у объекта, 3) это помогает давать объектам разумные интерфейсы

Aleksey
29.05.2017
21:54:51
может они и есть но они не нужны.
мьютекс ведь используется в прикладном коде, чтобы защитить какую-то часть Ruby кода от прерывания "на середине"
вернее, прирывание будет, то другой поток туда зайти не сможет
а GIL относится только к C-коду
это же разные уровни

Oleg
30.05.2017
01:46:22
GIL, кстати, не гарантирует что не получится 1+1 = 1, хотя в почти 100% будет 2

Alexander
30.05.2017
05:47:12

Roman
30.05.2017
05:47:49
надо ещё 4 пункта, да?)

Alexander
30.05.2017
05:48:21

Roman
30.05.2017
05:49:16
наследование идеологически - это родственная связь. типа похожие объекты. а в случае с Rack::Request и кастомной поделкой, никакой родственности нет

Alexander
30.05.2017
05:50:35
4 пункта я привёл того, что эта аргументация не согласуется с желанием людей проксю вкорячить

Roman
30.05.2017
05:51:11

Alexander
30.05.2017
05:51:22

Google

Roman
30.05.2017
05:51:56

Alexander
30.05.2017
05:52:05
Я этот реквест и тестирую по сути в том месте. Его сына, так сказать

Roman
30.05.2017
05:54:57
Не аргумент
а если надо допустим сериализовать реквест в csv- это тоже задача Request? тоже добавим миксин?
ещё раз, composition over inheritance - это про построение новых систем, не про адаптацию существующих

Admin
ERROR: S client not available

Alexander
30.05.2017
06:13:17
Композиция или наследование: как выбрать? / Хабрахабр
https://m.habrahabr.ru/post/325478/
Вот, перевод охуенной статьи. Ещё раз убедился, что я прав и не больной

Nikita
30.05.2017
06:44:48
Прокси не зависит от объекта, которому делегирует, может считать вызовы любых методов на любом объекте, это его единственная задача и он может быть использован с любым объектом, написать его нужно только один раз. Все это невозможно с наследованием, только extend может такое сделать, но объект может быть заморожен и тогда это тоже не сработает


Alexander
30.05.2017
07:23:29
#работа Middle / senior RoR разработчик / Team lead
Мы в компании seendex.ru (Москва) ищем на full-time middle / senior RoR разработчика.
Занимаемся разработкой B2B saas для автоматизации оценки уровня развития компаний и мониторинга эффективности коллектива.
Основные задачи:
- разработка архитектуры системы
- бекенд для расчётов
- помощь джуниорам
Используем рельсы 5.1.1, стандартный рельсовый набор (постгрес, rspec, sidekiq, всё такое), есть проекты на crystal. Любим классы и ООП.
з/п - до 180к рублей, офис в БЦ на м. Юго-Западная.
Из минусов:
- немного бюррократии
- рабочий день должен начинаться не позже 11:00
- нет печенек
Из плюсов:
- предоставляем рабочий макбук или альтернативу
- безлимитный кофе
- открыты к использованию новых технологий
- много пальм и света ?

Alexander
30.05.2017
07:41:24

Nikita
30.05.2017
07:44:09
я пытаюсь объяснить, что это должно быть выбором по умолчанию, потому что это позволяет писать более универсальный код. Я не считаю, что от того как ты напишешь свой тест, твои волосы станут мягкими и шелковистыми, просто рассказываю почем один подход предпочтительней другого

Anatoly
30.05.2017
11:51:29
Кто-нибудь вкурсе почему Rails.application.load_tasks ломает все тесты контроллеров?
Хотел протестировать рейк таску, но чтобы выполнить ее, нужно загрузить их

Alex
30.05.2017
11:53:37
как именно ломает?

Anatoly
30.05.2017
11:55:34
ActionView::Template::Error:
No route matches

Ярослав
30.05.2017
12:04:00
тестирую таски по этой статье, ошибок не возникает
https://robots.thoughtbot.com/test-rake-tasks-like-a-boss

Anatoly
30.05.2017
12:17:34
Да, тут очень хорошее решение, т.к. таски дублируются, а не используются текущие, спасибо!

Oleg
30.05.2017
14:11:51

Alexander
30.05.2017
14:12:59

Google

Alexander
30.05.2017
14:13:18
он жертвует параллельными вычислениями из-за этого преимущества

Oleg
30.05.2017
14:14:04
Там пишется что мол оно так, но в очень редких кейсах увы шансы словить подобное есть.
И что лучше использовать для этого специальные инструменты, а не полагаться на GIL
Может быть это не так, но станно тогда это всё

Alexander
30.05.2017
14:17:24

Oleg
30.05.2017
14:26:08
Об этом увы там умолчали
Но я на всякий случай принял во внимание

Alexander
30.05.2017
14:28:04
я не отрицаю, но любопытно. так-то можно сказать, что puts всегда выводит строку, но есть исключения, а какие — мы вам не скажем)

Nikita
30.05.2017
14:42:15
:001 > i = 0
=> 0
:002 > 5.times.map { Thread.new { 1000.times { i += 1; sleep(rand(100) / 10000.0) } } }.join
:003 > i
=> 1686
:004 >
ruby -v
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]

Igor
30.05.2017
14:45:18
join не сработал? Если подождать, то i будет равно 5000

Nikita
30.05.2017
14:46:47
а, точняк)

Alexander
30.05.2017
14:47:06
классный кейс)
вот я о таких именно и предполагал: когда программист косячит

Nikita
30.05.2017
14:48:51
нужно было map(&:join)

Ivan
30.05.2017
14:49:12
join у той скобки, только надо .each(&:join)

Nikita
30.05.2017
14:49:16
есть же ruby under microscope, я до нее не добирался, но мне кажется там должно быть это описано