@rubylang

Страница 1169 из 1684
Максим
14.08.2017
07:39:43
Про ноду

Fedor
14.08.2017
07:39:51
ничего

оно якобы многопоточное, но на самом деле нет

это просто бэк для фронтендеров

Google
Fedor
14.08.2017
07:43:15
а по поводу собеседований - не парься, на них надо ходить для самообразования

я когда начинал - ходил сначала на 2-3 собеседования туда, где не хотел работать

чисто что бы привыкнуть и узначть сто спрашивают, что сейчас актуально

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

Anton
14.08.2017
07:45:17
Максим
14.08.2017
07:46:01
Бля опаздываю ещё походу

Amir
14.08.2017
08:45:23
Чет не пойму с сублаймом Просто кнопки автоформатирования нету чтоли хотя бы по умолчанию делаю reindend, гдето ставит пробелы гдето табы, гдето вообще не трогает Подскажите может плагин какой есть ?

Кøе-ктø Геннадьевич
14.08.2017
08:47:08
рубокоп?

если я правильно понял вопрос

Рома
14.08.2017
08:54:25
Привет всем в этом чати! Есть крайне странный баг с rspec, очень странный, полный бред, помогите! it { p 'before test' p Place.count expect(items.length).to eq 0 # тут запрос на сервер происходит p 'after test' p Place.count } и на сервере в контроллере: p 'server' p Place.count Получается, что до реквеста есть записи, во время их в контроллере почему-то нет, после реквеста они опять есть. Как будто бы в rspec одна база данных, а в контроллере другая. Как такое вообще может быть возможно?

Fedor
14.08.2017
08:58:02
я ничего не понял

но вообще rspec работает в базе project_name_test

а запущенные сервер в project_name_production или project_name_development

Google
Fedor
14.08.2017
08:58:44
смотря где он запущен

Рома
14.08.2017
09:01:52
bundle exec rspec spec/controllers.... вот так запускается, сервер вовсе не отдельно существует, а вместе с тестами

в консольку выводится: "before test" 20 "server" 0 "after test" 20

Fedor
14.08.2017
09:03:35
а если сделать expect(Place.count).to eq(0) ?

пока как-то непонятно что такое items и как оно связанно с Place.count

Igor
14.08.2017
09:04:33
и где происходит запрос

Рома
14.08.2017
09:05:21
let(:items) { JSON.parse(subject.body)['items'] } снаружи от теста, то есть оно запрос делает

Igor
14.08.2017
09:05:43
лул

Рома
14.08.2017
09:06:25
expect(Place.count).to eq(0): expected: 0 got: 20

Igor
14.08.2017
09:06:36
парсишь криво

Fedor
14.08.2017
09:07:17
expect(Place.count).to eq(0): expected: 0 got: 20
ну значит все у тебя есть, просто ответ парсишь неправильно

Рома
14.08.2017
09:07:35
как неправильно?

Fedor
14.08.2017
09:07:50
воткни туда после expect binding.pry и посмотри, как у тебя реально выглядить subject.body

Рома
14.08.2017
09:08:25
дело в том, что в самом контроллере Place.count выдает 0, независимо от того как парсить

Igor
14.08.2017
09:08:40
или сделай так let(:items) { JSON.parse(subject.body)} а в тесте expect(items).to eq ''

Рома
14.08.2017
09:09:28
да {"items":[]}, не иначе, проблема в другом - непонятно в чем!

Fedor
14.08.2017
09:11:53
а что твой контроллер вообще возвращает?

и возвращает ли он что-нибудь вообще? )

воткни туда после expect binding.pry и посмотри, как у тебя реально выглядить subject.body

Рома
14.08.2017
09:14:49
Допустим, он ничего не возвращает или возвращает кракозябры, вопрос в том, почему в самом контроллере записей в базе нет, а до и после запроса они есть

Google
Рома
14.08.2017
09:15:06
undefined method `pry' for #<Binding:0x0055fc94b67c90>

Igor
14.08.2017
09:15:19
Откуда вообще беруться записи?

Рома
14.08.2017
09:15:41
из FactoryGirl в блоке before

Igor
14.08.2017
09:19:18
Из любопытства, измениться ли что-то если в тесте вместо Place.count использовать Place.reload.count

Рома
14.08.2017
09:20:28
потому что проблема не с тем, что он вернул что-то не то

вообще не важно что он возвращает

Fedor
14.08.2017
09:20:48
а с чем тогда проблема?

Рома
14.08.2017
09:21:04
В контроллере p Place.count выдает 0

Fedor
14.08.2017
09:21:15
в какой момент?

Рома
14.08.2017
09:21:43
метод ищет Place по критериям, вот в середине поиска

для точноты в самое начала экшна добавлю

Fedor
14.08.2017
09:23:19
смотри в чем прелесть pry

это дебагер

ты его вставляешь в любое место в коде, и при выполнении он в этом месте остановится

и ты сможешь дергать методы и смотреть свое состояние

Рома
14.08.2017
09:24:06
Ага, словил заразу!

Fedor
14.08.2017
09:24:07
может у тебя параметры не те, может ищет не правильно, может ищет не то, или не там

Google
Fedor
14.08.2017
09:24:19
просто возьми и посмотри

Рома
14.08.2017
09:25:40
Федор, мнение эксперта пожалуйста, все равно не понятно почему, но поиск сузился: экшн стартует, 20 мест сразу же вызывает scope модели в самом начале scope уже 0 мест как так?

Fedor
14.08.2017
09:26:29
ну например в scope есть where.('created_at < ?', Time.current - 1.year)

или что то подобное, что фильтрует твои записи

я потому и говорю про pry, что с ним ты можешь дернуть Place.all, Place.unscope, Place.where(<содержимое scope>)

и понять где выборка становится неправильной

причем сделать это прям посреди выполнения контроллера

наугад никто не скажет, где там что потерялось

Admin
ERROR: S client not available

Рома
14.08.2017
09:31:34
Нашел проблему

Place.scope1(...).scope2(...) Если в scope2 сделать Place.all.to_sql, то это будет запрос из scope1 Совершенно неожиданно!

Evegeniy
14.08.2017
09:35:17
Такой вопрос, кто как тесты через ВИМ гоняет? Просто интереса ради

Anton
14.08.2017
09:35:47
в консоли запускаю

Evegeniy
14.08.2017
09:35:56
я тоже в консоли

Рома
14.08.2017
09:35:57
а как их через vim гонять?

Evegeniy
14.08.2017
09:35:58
Но чет иногда лень

жать prefix+q + номер таба

хочется побыстрее

ну есть всякие vim-rspec + vim-dispatch

но чет как-то не вышло нормально натсроить

Google
Fedor
14.08.2017
09:36:58
AR соединяет скоупы через AND

тоесть если у тебя в первом скоупе отвильтрованная таблица, а во втором - нет, то это будет inner join и на выходе получится одна отфильтрованная таблица

все логично )

Рома
14.08.2017
09:38:48
У нас есть scope1: where(условия всякие) и scope2: просто вывести в консоль Place.count если сделать так Place.scope1(...).scope2(...) - в консоль выводится одно а если так: Place.scope2(...) - другое

Igor
14.08.2017
09:42:18
пишешь :Rails

запускает тест ассоциированный

Igor
14.08.2017
09:42:59
У нас есть scope1: where(условия всякие) и scope2: просто вывести в консоль Place.count если сделать так Place.scope1(...).scope2(...) - в консоль выводится одно а если так: Place.scope2(...) - другое
Простите что? Скоупы используются для фильтрации, объединений и прочих манипуляций изменяющих SQL запрос. Вы там что-то в консоль выводите? Пример применения скоупов может быть таким: скоуп1 - женщины, скоуп2 - старше 30 лет, скоуп3 - любят котов. Тогда чейн скоупов и сами скоупы по отдельности имеют смысл

Рома
14.08.2017
09:44:31
Да запросто в рельсах есть куча странностей

Igor
14.08.2017
09:45:41
Помоему очевидно что если есть скоуп catlovers и написать People.catlovers.all результат будет такой же как People.catlovers, если речь об этом

Рома
14.08.2017
09:46:23
Не об этом, а о том, что внутри скоупа текущий класс - уже не тот, что снаружи

Igor
14.08.2017
09:47:25
Не понял

Рома
14.08.2017
09:47:44
нет, тот же самый, я проверил

Anton
14.08.2017
09:50:10
Всем привет! Мы к RailsClub готовим интервью с Luca Guidi (который автор Hanami) Если у вас есть вопрос, который нам стоит задать - пишите, узнаем ответ

можно писать сюда, я передам

Рома
14.08.2017
09:50:57
class Place scope :scope1, -> { where(key: 'value') } scope :scope2, -> { p Place.all.to_sql } end логировать будет WHERE key = value

Страница 1169 из 1684