
Tony
08.12.2016
06:17:37
Компилируемые огонь

Evgeny
08.12.2016
06:19:51
Так всегда были) Вопрос лишь в том, как долго ты будешь делать на руби и как долго на С -> ++ -> etc. Правда последние типа го уже догоняют по удобству

Tony
08.12.2016
06:20:27

Evgeny
08.12.2016
06:21:48
Схож но не все) Но как я уже писал не так давно тут, 2 чела пилят, да еще за донат выбирают сколько часов в неделю будут делать, так долго не протянут поди. Я понимаю, что надо же на что то жить, но напор со стороны того же го просто зашкаливает, атут все то альфа. Надеюсь а ошибаюсь, т.к. кристал мне тоже больше нравится)

Google

Tony
08.12.2016
06:23:33

Evgeny
08.12.2016
06:24:34
Про что и речь

Alex
08.12.2016
07:13:23

Evgeny
08.12.2016
07:14:13
Не, в топку)
Вообще я совет знаю, рспек и так все тестит ок

Alex
08.12.2016
07:14:53

Evgeny
08.12.2016
07:16:47
Вообще мб и норм, я не спорю, просто раз 5е рельсы, могли бы что то придумать на этот счет. Я видел вроде что gem 'listen' должен был отвечать за изменение в коде где то на гитхабе, но что то видимо пошдл не так)

v
08.12.2016
07:44:24
пагни, а тут вроде бы были любители fish shell
какой у нее профит?


Дмитрий
08.12.2016
07:48:27
во всем круто - только иногда не видит переменные окружения
особенно когда много серваков, не надо листать вверх в поиске предыдущих команд\
Краткий список плюсов
Интерактивный режим работы и дружественность пользователю;
Подробная и доступная информация о командах делает их поиск значительно проще, чем в man-страницах оболочки bash. И даже если fish не сможет подключиться к X-серверу, для показа справки будет задействован браузер links;
Подсветка синтаксиса: при вводе команды буквы выделяются красным цветом, и меняют его на зелёный, если имя команды написано правильно;
Названия существующих папок подчёркиваются;
Eсть вкладки и история;
Достаточно набрать 192 и нажать стрелку вверх как в командной строке будут листаться все когда-либо исполненные команды где фигурировал этот обрывок адреса
Если начать набирать команду с начала, то сразу же предлагается продолжение из уже когда-либо выполенно команды, стрелочка направо и вся команда готова к запуску. Спасибо avas за подсказку
Fish использует специфические конструкции скриптов, которые проще для начинающих пользователей;
Автодополнение здесь лучше, чем в bash, так как fish умеет дописывать опции;
Легко читаемый вид функций;
Легко настраивать в браузере используя команду fish_config.
это с хабра 2-х летней давности

Google

Дмитрий
08.12.2016
07:52:24

v
08.12.2016
08:00:16
а с chruby/rbenv и т.п. он как?

Дмитрий
08.12.2016
08:01:22
отл, был рвм, ща рбенв - все ок

yopp
08.12.2016
08:09:59

Igor
08.12.2016
08:16:13

Rafkat
08.12.2016
08:17:42
https://github.com/rails/rails/pull/27300

Alex
08.12.2016
08:38:25
?

Anon
08.12.2016
08:56:19
Есть модель Foo, у которого belongs_to :previous_foo, class_name: "Foo"
Нужно в кверях взять всех foo с заинклуденными previous_foo
Foo.where.not(previous_foo: nil).includes(:previous_foo)
Достает foo у которых есть previous_foo, но не иклудит сами previous_foo, на них выдает nil'ы
как легче разрулить?

I
08.12.2016
09:01:57
а как проверяешь, что их не инклудит?

Anon
08.12.2016
09:02:53
foos = Foo.where.not(previous_foo: nil).includes(:previous_foo)
foos.first.previous_foo
Я походу накосячил кое-где
хотя не

v
08.12.2016
09:03:47
бле
такие вещи проще реверс-инжинирингом из SQL делать

Anon
08.12.2016
09:05:49
я не понимать почему л

I
08.12.2016
09:06:09
посмотри на запрос сформированный

Anon
08.12.2016
09:06:16
...почему оно ломается на нестандартной ситуации

Google

I
08.12.2016
09:08:04
ну а так тут нужен не includes, поспойлерю я
возьми eager_load

Anon
08.12.2016
09:09:41
поспойлери еще немного, почему не он нужен, если в такой же ситуации без алиасов всё делается как надо, кэширует все что надо без лишних запросов
"SELECT \"foos\".* FROM \"foos\" WHERE \"foos\".\"enabled\" = 't' AND (\"foos\".\"previous_foo\" IS NOT NULL)"Запрос ниочем, как будто инклудс не вызывал

Michael
08.12.2016
09:12:14
а с Foo.where.not(previous_foo: nil).eager_load(:previous_foo) что выдает?

I
08.12.2016
09:12:53
почитай про includes :)
вон даже русскоязычная статья на хабре есть
короткая и ясная
https://habrahabr.ru/post/191762/

Anon
08.12.2016
09:13:25
Прочитал, и читал более глубокие статьи по нему. Решения не нашел

I
08.12.2016
09:18:31
ну раз и глубокие статьи не помогли - печалька

Kirill
08.12.2016
09:18:41
у тебя и связь previous_foo и внешний ключ previous_foo?

Anon
08.12.2016
09:19:09

I
08.12.2016
09:19:24
с какими алиасами?

Anon
08.12.2016
09:19:29

Kirill
08.12.2016
09:19:54
where.not(previous_foo_id: nil)

Michael
08.12.2016
09:20:09
только хотел написать)))
скорее всего в foos.first какраз и нет previous_foo

Anon
08.12.2016
09:21:35
с какими алиасами?
ну тип что previous_foo_id ссылается на другой foo. Я ж не в первый раз это делаю, я вроде как понимаю что такое includes и eager_load

Google

Alex
08.12.2016
09:22:00
Foo.first.previous_foo_id что дает?
Окей теперь Foo.find(previous_foo_id)

Anon
08.12.2016
09:22:14

Michael
08.12.2016
09:22:32
нет

I
08.12.2016
09:22:48
у тебя :"SELECT \"foos\".* FROM \"foos\" WHERE \"foos\".\"enabled\" = 't' AND (\"foos\".\"previous_foo\" IS NOT NULL)"
а надо: "SELECT \"foos\".* FROM \"foos\" WHERE \"foos\".\"enabled\" = 't' AND (\"foos\".\"previous_foo_id\" IS NOT NULL)"
Ну, точней, надо еще JOIN, но всему свое время

Alex
08.12.2016
09:22:49
что дает Foo.find(previous_foo_id) ?

Michael
08.12.2016
09:22:50
у тебя where.not(previous_foo: nil)
а ты попробуй сделать where.not(previous_foo_id: nil)

Admin
ERROR: S client not available

Kirill
08.12.2016
09:23:07
омг

I
08.12.2016
09:23:30
первый раз слышу "алиас" в этом контексте, обычно все это ссылкой называли

Alex
08.12.2016
09:24:14
Ты там не графы часом строишь?
или дерево?
для этого есть нормальные решения

Anon
08.12.2016
09:24:38

Alex
08.12.2016
09:25:28
Foo.find(Foo.first.previous_foo_id) != Foo.first.previous_foo
Верно?

I
08.12.2016
09:25:29
Дает что надо
ну так что, с not(previous_foo_id: nil) попробовал или нет?

Anon
08.12.2016
09:25:38

I
08.12.2016
09:26:04
да, но ты посмотри в запрос свой внимательно...
у тебя есть в SQL поле previous_foo ?

Google

Anon
08.12.2016
09:26:38
Бля посоны отбой
Я наебал сам себя

I
08.12.2016
09:26:49
=/

Anon
08.12.2016
09:27:12
previous_foo из дефолтного скоупа уходит когда создается foo
потому nil

I
08.12.2016
09:27:32
ты все равно не понял прикола :с

Anon
08.12.2016
09:28:04
да Foo.where.not(previous_foo: nil) и Foo.where.not(previous_foo_id: nil) равнозначные
Рельсы-ПГ достаточно умные чтобы понять что искать надо по id, иначе бы ошибку по column does not exist давали б

Alex
08.12.2016
09:29:34
Запрос то какой уходит лол

Anon
08.12.2016
09:29:38
Вы за меня, как говорится, совсем дурака не держите

Alex
08.12.2016
09:30:05
Ты даже тут фразу неправильно построил.

Anon
08.12.2016
09:30:17
я ее специально неправильно построил же
Гамаз
https://www.youtube.com/watch?v=tizUSGKFkIA

Michael
08.12.2016
09:33:00
то что рельсы достаточно умны, это понятно но ты привел пример запроса, что у тебя выпоняется
(\"foos\".\"previous_foo\" IS NOT NULL)
а рельсы из .where(previous_foo: nil) должны были сделать
(\"foos\".\"previous_foo_id\" IS NOT NULL)

Anon
08.12.2016
09:35:01
и не жаловался на несуществующую колонку

Michael
08.12.2016
09:35:26
в общем, слава богу что ты нашел, где у тебя проблема.

Alex
08.12.2016
09:37:12
Тесты напиши на это