@rubyschool

Страница 572 из 921
Dmitry
18.03.2018
23:18:35
Иногда, гем может быть просто интерфейс("мидлваре") для какого-либо п.о.

Axel
19.03.2018
04:57:58
Товарищи, может кто подскажет: Есть функция, отрезающая .html у ссылки и перенаправляющая, соответственно, на страницу без .html Она справляется, путь обрезает, но что-то браузер собщает, что произошло цикличное перенаправление, и страницу не открывает.. Возможно, можно как-нибудь по-другому переписать это решение: get '/:name', to: redirect {|path_params, _| "/#{path_params[:name].gsub(/^\d+\-/, '')}" } Например, заменив :name и path_params на что-то другое, или вообще убрав параметры, мне же нужно просто к ссылке обращение?

Vlad
19.03.2018
05:04:57
Зачем нагружать рельсы такой задачей? Через rewrite в nginx/apache не проще сделать?

Axel
19.03.2018
05:11:40
В данном случае создание файла htaccess не является возможным,нужно решить через routes.rb

Google
Alexandr
19.03.2018
05:44:58
Привет всем. Можно ли из сессии получить доступ к значению определённого поля формы, пока она ещё не отправлена?

Axel
19.03.2018
05:53:48
Через js?

Vladimir
19.03.2018
05:57:36
зачем тут фейкер?

Alexandr
19.03.2018
06:12:17
Нет, через контроллер, для совершения другого действия.

Просто нужно либо сохранить инфу в базу, либо отправить на сторонний сервис

Dmitry
19.03.2018
07:15:33
Я тоже думаю что js тут в помощь

Kim
19.03.2018
07:31:40
js

Что-то типа $('#input-id').val()

Alexandr
19.03.2018
08:16:37
Спасибо

Konstantin
19.03.2018
08:18:37
Js

Andrey
19.03.2018
09:25:37
Добрый день ребят Такая ситуация возникла, может решение где то поверх но не нашел.. Есть проект в котором работаю, у меня есть 3 основных машины с которых я могу работать (ПК и 2 ноута на выезд) - суть вопроса: "Возможно ли на всех трех устройствах использовать 1 связку SSH ключей для коммитов в Bitbucket ?" что бы я мог дать владельцу 1 паблик ключ (а не 3 штуки)

Andrey
19.03.2018
09:40:43
везде создать одинаковую папку .ssh?
т.е. на всех машинах просто поместить один и тот же ключ ? в ~/.ssh

Google
Roman
19.03.2018
09:41:01
ну да

Vladimir
19.03.2018
09:41:19
только паблик на другие машины отправь

Andrey
19.03.2018
09:41:36
по идее да
хм, нужно попробовать, в принципе я так и думал..

Alex
19.03.2018
10:20:41
вопрос, работает ли super с примесями ? в субклассах

Если я правильно понял то в модулях не используют метод inizialize когда модуль используется в качестве примеси

только я не до конца понял почему, если у меня есть субкласс который переопределяет initialize, то можно использовать же по идее ключевое слово super, однако если initialize определен в суперклассе и туда же добавлены примеси со своим initialize, согласно цепочке, субкласс сначала полезет в примесь, и если не найдет метод там, то полезет в субкласс, выходит тогда super должно быть и в модуле и в субклассе ? или в модуле не работает супер? пойду попробую пока что на практике поиграться

Andrey
19.03.2018
10:33:16
Ты какие то оторванные от жизни эксперименты ставишь :)

Я вот не могу сказать что будет откуда будут вызываться одноименные методы если подмешиваешь что то. Так просто не надо делать.

Alex
19.03.2018
10:37:09
Непонятно



Andrey
19.03.2018
10:39:20
Что за субкласс у тебя?

Alex
19.03.2018
10:39:28


Andrey
19.03.2018
10:39:32
Вот я про это и говорю

Зачем тебе в модуле initialize

Alex
19.03.2018
10:40:29
ну потому что там будет какой-нибудь метод, со своими переменными которые будут создаваться когда я создам объект

Andrey
19.03.2018
10:40:55
Так не надо делатт

И что super по твоему должен вызвать в модуле?

super вызывает одноименный метод у родителя.

Alex
19.03.2018
10:42:10
он должен вызывать метод суперкласса, класса в котором он подмешан

Google
Alex
19.03.2018
10:42:21
так он и вызывает

Andrey
19.03.2018
10:42:34
У твоего модуля нет родителя. Точнее там родитель какой нибудь базовый класс Module

Alex
19.03.2018
10:42:49
так в том то и дело, посмотри на результат

там дважды один результат

объект bar отработал inialize суперкласса, потом модуля, потом класса, стоит мне убрать super из модуля и будет только модуль и класс

в книге head first было сказано что inizialize нельзя использовать в модуле, потому что он просто может быть переопределен в классе к которому его подмешают

Но это не объяснение, почему нельзя

это просто констатация факта

Andrey
19.03.2018
10:45:54
Нельзя потому что непонятно что произойдет.

Alex
19.03.2018
10:46:22
при этом , использование super в модуле , реально дико выглядит

выходит что inizialize нельзя использовать в модуле , потому что у модуля нет супер класса и в нем нельзя использовать super, вернее потому что все это вместе может выдать неизвестный результат

тогда как у супер класса скорее всего будет initialize

Alex
19.03.2018
10:50:18
и если не использовать initalize в модуле, то не будет проблем с initialize в субклассе, результат будет ожидаемым, так?

Andrey
19.03.2018
10:51:56
Нельзя делать одинаковые имена у методов класса и модуля. Метод Initialize просто частный случай. Он есть по умолчанию у всех классов.

Потому что когда одинаковые имена непонятно что произойдет.

Alex
19.03.2018
10:52:57
т.е. нельзя переопределять в классе к которому подмешан модуль методы модуля?

Andrey
19.03.2018
10:53:07
При наследовании понятно. Там сначала вызывается child

Alex
19.03.2018
10:53:30
а можно ли переопределять методы модуля в субклассе к суперклассу которого подмешан модуль?

Andrey
19.03.2018
10:55:21
Отвечаю на оба вопроса. Нельзя делать неочевидные вещи.

Alex
19.03.2018
10:55:57
Зничит примеси можно использовать только с конечными суббклассами?

Google
Alex
19.03.2018
10:56:40
просто ввиду того что на практике у меня не будет больше 3 класс наследующих друг у друга

Andrey
19.03.2018
10:56:43
Нет, куда хочешь туда пихай.

Alex
19.03.2018
10:57:09
так а если я сделаю класс, подмешаю, а потом другой разработчик унаследует и переопределит ?

Andrey
19.03.2018
10:58:44
То скорее всего будет работать переопределенный метод.

Alex
19.03.2018
10:59:35
я пока единстенный для себя ответ нашел в том что мне просто не придется на практике переопределять методы модуля

Andrey
19.03.2018
11:00:53
Но вообще это уже будет патч. И так делать плохо. Если тебе надо переопределять подмешанное, то скорее всего не надо было подмешивать а просто завести методы в родительском классе.

Alex
19.03.2018
11:02:01
просто к примеру у меня есть три класса которые наслудуют с супер класса, и мне надо что бы у двух из них был метод foo, а у третьего не было, и что бы у всех был метод bar

тогда определяю bar у суперкласса

Admin
ERROR: S client not available

Alex
19.03.2018
11:02:23
а foo у модуля и подмешиваю там где надо, так?

Andrey
19.03.2018
11:02:52
Не так.

Alex
19.03.2018
11:03:05
а как?

Andrey
19.03.2018
11:03:59
Тебе тут вообще ничего не надо подмешивать.

Подмешивание это вообще редкий кейс.

Alex
19.03.2018
11:05:03
определяю метод в первом классе и копирую код метода ручками во второй класс?

Alex
19.03.2018
11:06:09
такое ощуние что я читаю тупую книгу

Не знаю чувак.
в смысле???

Andrey
19.03.2018
11:07:58
Я не знаю что у тебя там может быть за ситуация что такой кейс случился. Вообще наследование это тоже плохо. И его тоже желательно избегать.

Alex
19.03.2018
11:08:21
ну я просто книжку читаю там и рассказывается кейс

Google
Alex
19.03.2018
11:08:27
который я в двух словах и описал

Andrey
19.03.2018
11:08:30
Сферической конь в вакууме.

Alex
19.03.2018
11:08:34
да

Dmitry
19.03.2018
11:11:40
В модуле инишиалайз не используют потому что нельзя создать объект модуля.

А инишиалайз как раз запускается при создании объекта (класса)

Я с этим сам долго в самом начале морочился, пока в голове все не устаканилось.

Особенно из-за обилия синонимов в профессиональном сленге.

Объект -инстанция. Метод - функция. И тд

Alex
19.03.2018
11:16:57
так ведь модуль получается как блок когда, просто добавляет метод к классу, просто тупо копирует код, а методы какие бы там не были определенны они всегда создают переменные в объекте



просто если ввести p MyClass.ancestors то результат [MyClass, MyModule, MySuperclass, Object, Kernel, BasicObject], выходит что мой модуль сталь по факту суперклассом прослокой для которой неопределенны методы создания объектов

и я ещё не могу понять что же мне не нравится во всем этом

а не нравитс мне то что использовать super в модуле не зная что будет по факту суперклассом, результат выходит не предсказуемым

Ro
19.03.2018
15:28:56
поэтому во многих языках и нет множественного наследования

типа C#

в рубях, конечно, принято все в модули пихать. По сути модуль - это копипаста кода

в связи с этим рекомендую делать сущности проще

если в сущности более 5 методов, то она считается сложной

представь что у тебя есть шкаф - что с ним можно сделать? открыть, закрыть, положить вещь, взять вещь

Страница 572 из 921