
Alexander
22.11.2016
18:42:27

Alex
22.11.2016
18:43:01
А каллер тут причем вообще?

Alexander
22.11.2016
18:43:15
А каллер тут причем вообще?
а константы в экземпляре класса при чём?
экземпляр ищет метод экземпляра самый ближайший, в том числе caller'а.
а константу — нет.
обновил гист: https://gist.github.com/AlexWayfer/cf90f2bc18d69477899b8731ccdecc7b

Google

Иван
22.11.2016
18:53:42
да хватит мешать в кучу method lookup и constatant lookup это 2 разные темы

Alex
22.11.2016
18:53:45
Я думал он по предкам гоняет

Alexander
22.11.2016
18:53:54
если уж сделали константу доступной из экземпляра класса (зачем?) — то почему логика с наследованием не такая же, как с методами инстанции? приходится дописывать self.class::

Dmitriy
22.11.2016
18:57:26
Ребят, я понимаю что мало ещё понимаю в рельсах, да да да надо купить ману, ну никто не поделится опытом, что делать если во вьюхах становиться слишком много логики... Куда вы не выносите обычно?
Ее*
курить*

Lupsick
22.11.2016
18:58:53

Иван
22.11.2016
18:58:53
Я думал он по предкам гоняет
поиск метода именно в этом и заключается. смотрим на какой класс сылается наш объект -> ищем в этом классе метод -> идем в суперкласс -> ипродолжаем бродить по суперклассам пока не найдем метода

Lupsick
22.11.2016
18:58:59
во вьюхах не должно быть логики

Alexander
22.11.2016
18:59:42

Dmitriy
22.11.2016
18:59:44
Ну что то на подобии unless train.nil? Делать что то

Eugene
22.11.2016
18:59:45
в папку helpers

Google

Alex
22.11.2016
19:00:08
Если контроллер толстый - выносишь в сервис объекты например

Dmitriy
22.11.2016
19:00:25
Ну я снова чтьал что в контроллерах не должно быть логики тоже

Alexander
22.11.2016
19:00:30

Dmitriy
22.11.2016
19:00:33
Ну много

Alex
22.11.2016
19:00:36
либо бей вьюху на партиалы, но следи за производительностью. Либо хелперы

Alexander
22.11.2016
19:00:43

Alex
22.11.2016
19:00:44
Посмотри на drapper

Alexander
22.11.2016
19:01:01

Dmitriy
22.11.2016
19:01:11
Или вот мне надо было посчитать количество плацкартных вагонов

Alex
22.11.2016
19:01:21
Ну тут просто нет универсального ответа.

Alexander
22.11.2016
19:01:22

Alex
22.11.2016
19:01:28
Вьюха может быть толстой по разным причинам и надо код смотреть.

Alexander
22.11.2016
19:01:42
ну можно ещё контроллер или модель засорить

Alex
22.11.2016
19:01:54
Вообще всю такую логику в контроллере надо делать
до вьюхи все это разжеванным должно приходить

Alexander
22.11.2016
19:02:04

Alex
22.11.2016
19:02:15
Дя. Шаблоны не очень подходят

Google

Dmitriy
22.11.2016
19:02:30
Ну окей, просто где не прочтёшь то везде говорят что контроллеры не должны иметь много логики
Типа это противоречит
Идее

Alexander
22.11.2016
19:02:51
но контроллер должен выполнять роль «получил данные — отдал данные — получил ответ — отобразил ответ», то есть не более 10 строк кода на action (можно приватные методы раздувать, но начинается мусор)
«разжёвыванием данных для view» занимаются как раз view objects. либо можно выносить это в модель / контроллер, но не очень хорошо

Alex
22.11.2016
19:03:50
Контроллер может дернуть специальный класс который будет сложную логику считать
это нормально вполне.

Alexander
22.11.2016
19:04:27
условно говоря, ты отдаёшь view object экземпляры, она составляет Hash (или имеет публичные методы) _только_ нужных для view данных и скармливаешь её для view

Alex
22.11.2016
19:04:50
Ну view object это тоже самое что отдельный класс для логики, просто дергаться он будет во вьюшке.
Оба подхода одинаково хороми на мой взгляд.

Dmitriy
22.11.2016
19:04:58
Ну а вот если сложное Приложение, там где полно различной логики, везде же пишут что для бизнес логики существуют модели, но вот ещё читаю чтл модели тоже не должны быть забиты логикой

Alexander
22.11.2016
19:05:02

Alex
22.11.2016
19:05:13
Но если дергать во вьюхе слишком много view object то можно потерять какие из них актуальны а какие нет.
в контроллере нагляднее видно зависимости.

Alexander
22.11.2016
19:05:25

Alex
22.11.2016
19:05:39
Ну не просто может, должен имхо.
Дергать из модельки классы все равно что базу дергать.

Alexander
22.11.2016
19:06:36
ну или service objects и всё такое

Google

Dmitriy
22.11.2016
19:07:14
Окей) просто главный вопрос который меня мучает
Куда девать логику
Уже который день, и нигде не нашёл где это описано


Alexander
22.11.2016
19:08:01
контроллер дёргает service object, который знает о моделях (доступ к БД) и содержит логику некоторую, возвращает ответ, ты его во view object, и view object в template
примерно такой подход есть, если не путаю
чаще конечно встречается больше грязи. но, повозившись в грязи, начинаешь сам осознавать что зачем и почему
«логика приложения» просто правда размытое понятие, и оно в любом случае (кмк) размазывается по приложению.
вот есть у тебя if в шаблоне. вроде бизнес-логика. однако выноси - не выноси — всё равно останется if. ну там партиал может быть, генерация, и т.д. и т.п., но if будет, разве что вёрстку из шаблона вытянешь куда-нибудь в рубишный код, что тоже нехорошо, имхо
а логика тип «получить вот эти модельки с такой фильтрацией в таком порядке» — это тоже бизнес-логика, но её уже точно не в шаблоне хранить. кто-то в модель методы пихает, кто-то в service objects, кто-то в контроллере. зависит от ситуации, опыта, взглядов и т.д.


Dmitriy
22.11.2016
19:12:47
Понял, ну самое простое для меня это конечно в контроллере
Раньше я засовывал все методы в application controller

Alexander
22.11.2016
19:13:10
Уже который день, и нигде не нашёл где это описано
кое-что стоит держать уме: если для компании %COMPANY_NAME% удобен инструмент %LIBRARY_NAME% — это не значит, что ты должен бежать его использовать в своём проекте. у всего есть контекст.
то же с построением приложения. есть общие принципы, есть спорные и гибкие. не стоит находить какую-то компанию с каким-то проектом и пытаться у себя повторить в совершенно другом проекте их опыт.

Admin
ERROR: S client not available

Alexander
22.11.2016
19:14:50
скорее всего, без опыта и опытного наставника, ты накосячишь, в том числе с архитектурой. будешь плеваться. и страдать. и возможно даже плакать. вероятно даже перепишешь. но поймёшь, надеюсь, что для определённых случаев лучше не делать определённым образом.

Dmitriy
22.11.2016
19:15:26
Просто я знамаюсь рельсами по 7 часов в день и что то туплю блин )

Alexander
22.11.2016
19:15:40
почитать ресурсы, блоги и пр. полезно, даже книги мб, но нигде нет серебряной пули.

Dmitriy
22.11.2016
19:16:36
Ну как бы, есть желание, и тяга к знаниям, интерес
Серьёзно, понимаю что потратив целый день и решив какую нибудь может потом кажущуюся простой проблему, всеравно же двигаюсь вперёд
Хотя мне кажется я никогда не устроюсь ROR разработчиком

Alexander
22.11.2016
19:22:20

Dmitriy
22.11.2016
19:22:29
?

Google

Lupsick
22.11.2016
19:23:45
желательно каждый день

Dmitriy
22.11.2016
19:26:03
Так и делаю, каждый день

Timur
22.11.2016
20:57:13
привет! кто-нибудь сталкивался с такой проблемой при деплое на AWS EC2 через капистрано?
01 Git error: command git fetch --force --quiet --tags
01 'git://github.com/activeadmin/activeadmin.git' "refs/heads/*:refs/heads/*" in
01 directory
01 /var/www/easierlife.de/shared/bundle/ruby/2.3.0/cache/bundler/git/activeadmin-c24fcef949b2f1bbdf6b5a17650dcd86d73f2528
01 has failed.
01 If this error persists you could try removing the cache directory
01 '/var/www/easierlife.de/shared/bundle/ruby/2.3.0/cache/bundler/git/activeadmin-c24fcef949b2f1bbdf6b5a17650dcd86d73f2528'
удалял этот несчастный “activeadmin-c24fcef949b2f1bbdf6b5a17650dcd86d73f2528”. выдает “не могу найти эту директорию” -.-

Alex
22.11.2016
22:25:18
Дамы и господа, в этом чате есть рубисты?
А есть ли поклонники языка Crystal, мне интересно?

Lupsick
22.11.2016
22:30:30

Alex
22.11.2016
22:32:02
Нет
Я просто издалека начал
Наркоманы вот:
If you want to contribute then you might want to install Crystal from sources. But Crystal is written in Crystal itself! So you first need to use one of the previous described methods to have a running compiler.
Что мы знаем о рекурсии?
Вот, сука
Попробуйте забутстрапить кристал на платформе, где его никогда не было

Alex
22.11.2016
22:49:59
Давай, теперь расскажи как скомпилить C компилятор без C компилятора.

Alex
22.11.2016
22:52:26
Вопрос же не в этом
Вопрос в том, что у Crystal отсутствует повторяемость сборки
Сначала это был просто gem
Который сам себя не бутстрапил
А потом - фигак

Alex
22.11.2016
22:53:24
Ты предлагаешь писать tiny-crystal чтобы формально верифицировать что с crystal все ок?