
Vladimir
08.06.2016
09:30:20
если не нужна *инициализация*, то и возня с классами не нужна в принципе, достаточно статических методов. а если она нужна, то ее надо делать потокобезопасно, ну и напомню что в руби нет аналога статических конструкторов
а синглтоны как раз дают безопасную инициализацию

yopp
08.06.2016
09:32:11
в mri ещё может быть

Google

Vladimir
08.06.2016
09:33:30
но в то же время я не топлю за синглтоны, это антипаттерн.
в mri ещё может быть
ну дабл чек, на котором инициализация синглтона в стдлибе сделана, может в жруби конечно не работать как следует
я про double-checked locking
надеюсь, в jruby другая реализация синглтона
если не ошибаюсь, именно для подобных вещей Чарльз Наттер просил в руби volatile

yopp
08.06.2016
09:39:16
я про double-checked locking
там всё несколько хуже, на самом деле. ещё недавно в jruby были очень большие проблемы с назначением констант. это не threadsafe операция

Vladimir
08.06.2016
09:39:59

yopp
08.06.2016
09:40:07

Vladimir
08.06.2016
09:40:22
ну, да

yopp
08.06.2016
09:40:31
ну вот :)

Vladimir
08.06.2016
09:40:45
но это тоже не что-то хорошее уже само по себе

yopp
08.06.2016
09:41:01
ну привет, рельса вся на автолоаде построена :)

Vladimir
08.06.2016
09:41:07
знаю

Google

Vladimir
08.06.2016
09:41:27
но рельса тоже не что-то хорошее
отчасти поэтому тоже
да не троллю. просто это не аргумент в пользу автолоада

yopp
08.06.2016
09:43:56

Vladimir
08.06.2016
09:46:35
ну нельзя сделать абсолютно всё потокобезопасным в языке где всё подряд мутируется.
не измазывать же всё блокировками

yopp
08.06.2016
09:47:18

Aldar
08.06.2016
11:21:20
https://news.ycombinator.com/item?id=11814828

Pavel
08.06.2016
11:25:02
Вот ещё: https://angel.co/
https://whoishiring.io/search/27.859/-37.178/2/?order=distance (ссылка с твоего сайта)

Konstantin
08.06.2016
12:02:45
бля, grape внутри это просто треш

Vladimir
08.06.2016
12:06:03
не используй его
он решает проблему которой нет

Konstantin
08.06.2016
12:07:36
снаружи он хорош.
а какая альтернатива?

Anton
08.06.2016
12:08:21
Любой другой роутинг Фреймворк

Vladimir
08.06.2016
12:08:55
он не решает ничего
никаких задач

Google

Vladimir
08.06.2016
12:09:58
а альтернативой в нерешении задач может быть вообще что угодно :)

yopp
08.06.2016
12:10:12
но там удобная история с версионированием
но это, кажется, всё

Konstantin
08.06.2016
12:10:55
@async_prince а какой решает? и что вообще есть задача?

yopp
08.06.2016
12:10:59
ну и валидация параметров, может быть

Konstantin
08.06.2016
12:11:12
@davydovanton никакой гарантии, что не поменяешь шило на мыло

v
08.06.2016
12:11:34
Да вроде грэйп один такой в своем роде

Konstantin
08.06.2016
12:11:35
@dd_bb документация апи в коде

v
08.06.2016
12:11:45
другие фрэймворки на себя столько не берут

yopp
08.06.2016
12:12:00

Konstantin
08.06.2016
12:13:24
@dd_bb краткая. https://github.com/ruby-grape/grape#describing-methods

Vladimir
08.06.2016
12:13:36
блин да обычный рельсовый роутер с обычными рельсовыми контроллерами, например, заменяют грейп.

yopp
08.06.2016
12:14:09
и документирует запрос/ответ?
ну и документация это бонус, да
но в остальном я согласен что грейп нинужен

Konstantin
08.06.2016
12:16:50
@async_prince и околонулевой декларативностью. едет convention через configuration, что в итоге получается непонятно.
в грейпе на выходе гораздо более шумный код на первый взгляд, но зато он весь вот он, перед тобой, только руку протяни

Google

Vladimir
08.06.2016
12:19:33

Aldar
08.06.2016
12:20:09
вот у меня есть миксин в котором в методе initialize есть инициализация инстанс переменной
как запустить метод initialize миксина, в классе в который я его инкладил?
module Mixin
def initialize
@a = :foo
end
end
class MyClass
include Mixin
def initialize
end
end

yopp
08.06.2016
12:21:57
prepend
У тебя из класса метод перекрывает миксин

Aldar
08.06.2016
12:22:13
как сделать чтобы в MyClass была @a из Миксин
а если я вызову super?

Vladimir
08.06.2016
12:22:46

Admin
ERROR: S client not available

Konstantin
08.06.2016
12:22:48
@hardliner ты не хочешь так делать

yopp
08.06.2016
12:22:54
До миксина поиск не дойдёт тупо

Aldar
08.06.2016
12:23:17
class MyClass
include Mixin
def initialize
super
end
end

Vladimir
08.06.2016
12:23:32

Aldar
08.06.2016
12:23:32
почему не дойдёт

yopp
08.06.2016
12:23:48
У тебя цепочка поиска: MyClass', MyClass, Mixin

Aldar
08.06.2016
12:23:49
поидее он должен искать сначала в модулях

Mikhail
08.06.2016
12:24:01

Aldar
08.06.2016
12:24:08
тут без разницы

Mikhail
08.06.2016
12:24:15
включит тебе инитиалайз парента

Google

Aldar
08.06.2016
12:24:16
потому что аргументов нет

yopp
08.06.2016
12:24:17
Если сделать prepend будет MyClass', Mixin, MyClass

Konstantin
08.06.2016
12:24:21
@hardliner почему наследование тупо не сделать? и дергай super
и будет работать

Aldar
08.06.2016
12:25:12
вроде как я написал работает

Vladimir
08.06.2016
12:26:07
ой всё, в этом чяте советуют пользоваться наследованием...

Konstantin
08.06.2016
12:26:07

Aldar
08.06.2016
12:26:25
зачем мне наследование, если я хочу миксин написать?

Vladimir
08.06.2016
12:26:26
там что-то стекается, что-то нет, что-то мержится
Слишком сложно
Грейп сложный

Aldar
08.06.2016
12:26:49
а если у меня несколько миксинов?
что делать?
супер не проканает
точнее проканает только для одного миксина, который заинклужен последним

yopp
08.06.2016
12:27:35
Во всей цепочке наследования. Тогда проканает

Aldar
08.06.2016
12:27:55
во всех миксинах

yopp
08.06.2016
12:27:58
Да

Aldar
08.06.2016
12:28:07
решение не очень

yopp
08.06.2016
12:28:14
Другого нет

Aldar
08.06.2016
12:28:18
есть