
Roman
31.07.2018
12:11:50
но я бы xpath вообще не трогал. если это чистый селениум то driver.find_element(:css, '.product-man .product-name')[:title]

Alena
31.07.2018
12:18:01
капибара
ой какая капибара
nokogiri

Google

Alena
31.07.2018
12:20:13
q

Кирилл
31.07.2018
12:20:53
nokogiri
Аналогично: https://stackoverflow.com/questions/7107642/getting-attributes-value-in-nokogiri-to-extract-link-urls

Alena
31.07.2018
12:22:56
ой спасибо!) счас попробую!

Roman
31.07.2018
13:05:30

Alena
31.07.2018
14:35:46
category_page_links.xpath('//div[@class= "product-man"]/a[@class = "product-name"]/@title').first.value NoMethodError: undefined method `value' for nil:NilClass

Кирилл
31.07.2018
14:45:55

Roman
31.07.2018
15:04:10

Dima
31.07.2018
15:05:02
https://en.wikipedia.org/wiki/YaST написан на Ruby

Roman
31.07.2018
15:51:27

Alexey
31.07.2018
15:55:31
и chef

N?N?ⓂE
31.07.2018
19:39:39
Че это за назойливая хня?

Andrey
01.08.2018
07:46:11
Я хочу добавить возможность запуска на mri модульного рельс приложения(настроено под jruby) . Я вытащил все зависимости (бд и небольшой кусок джава кода), уже работает. Для каждого модуля были два гемспека под mri и jruby. В jruby он такой же, только добавлено s. platform ='java'. Босс говорит это важно) вопрос: чтобы на jruby ничего не поломалось имеет ли смысл добавить такой код в один гемспек: s. platform = 'java' if RUBY_ENGINE =='jruby'

Google

Andrey
01.08.2018
08:19:06
Привет!
А есть что-нить почитать, чтобы сделать верный выбор между return 1 или raise "ololo" ?
Вопрос шире вопроса по языку, но в каждом языке есть свои предпочтени, инстурменты, традиции. Как дела с этим в Ruby?

Dima
01.08.2018
08:22:43

Tim
01.08.2018
08:25:51

Dima
01.08.2018
08:26:55

Tim
01.08.2018
08:27:25
ты хочешь спросить, как правильнее контролировать флоу исполнения, с помощью возвращения определенного значения или с помощью эксепшена? ответ на это простой: с помощью эксепшена

Andrey
01.08.2018
08:31:32
Спасибо за развёрнутый ответ!

Alexander
01.08.2018
08:41:52

Anton
01.08.2018
08:41:53
Те ты кидаешь эксепшен, но ловишь его где-то в совершенно другом месте
Логика мешается, тестировать сложно
Есть шанс потерять эксепшен и уронить продакшен
Ну и ловля эксепшенов в руби прямо ОЧЕНЬ медленная

Denis
01.08.2018
08:44:02
Эксепшены на то и эксепшены, чтобы юзать их там где что-то пошло не так как ты ожидал, а-ля юзер тебе скормил ересь какую-то на входе

Tim
01.08.2018
08:44:37
и тестировать такой метод еще сложнее

Anton
01.08.2018
08:45:07
А вот и нет, эксепшены нужны что бы программу остановить и понятное сообщение показать юзеру что мол не могу дальше

Tim
01.08.2018
08:45:20
не согласен

Anton
01.08.2018
08:45:33
Только «не могу дальше» и «не валидные данные» это разное

Google

Anton
01.08.2018
08:46:43
Railway обычный используешь и радуешься жизни. Благо есть просто дофига всего для имплементации его

Slava
01.08.2018
08:57:02
Привет. Кто-нибудь знает, есть ли способ определить, что запись была создана внутри незакоммиченной транзакции?

Tim
01.08.2018
08:57:41
это и есть ad-hoc загрязнение логики

Alexander
01.08.2018
09:00:12

Anton
01.08.2018
09:00:37

Alexander
01.08.2018
09:01:04

Tim
01.08.2018
09:10:51

Anton
01.08.2018
09:12:15

Tim
01.08.2018
09:12:26
ну суть в том что в итоге получается такой код
def a
result = method
if result.status == 'ok'
result.body
elsif result.status == 'err'
# something
end
end

Anton
01.08.2018
09:13:15

Tim
01.08.2018
09:13:16
вместо
def a
method
rescue A
# something
rescue B
# somthing else
end
ну это синтаксический сахар
сути не меняет

Anton
01.08.2018
09:14:16
К тому же, можно забить на ифы, если посмотреть на функциональщину и на нормальный railway

Admin
ERROR: S client not available

Anton
01.08.2018
09:14:46
Даже в руби

Tim
01.08.2018
09:15:32
на работу method ты имеешь в виду?

Google

Anton
01.08.2018
09:16:05

Tim
01.08.2018
09:16:13
ну в случае с эксепшенами тебе достаточно знать какие эксепшены он кидает

Anton
01.08.2018
09:16:14
А вообще вот, ссылка #1
https://t.me/pepegramming/24
#2

Tim
01.08.2018
09:16:38
что равнозначно

Anton
01.08.2018
09:16:50
https://t.me/pepegramming/76

Tim
01.08.2018
09:16:53
ок, потом гляну

Anton
01.08.2018
09:18:06
что равнозначно
Нет, потому что видов твоих ошибок по любому больше будет, чем 1 интерфейс объекта. + ты по любому начнёшь АР эксепшены ловить и тут начнётся интересное. Где грань между контролем бизнес логики и вообще всего подряд?

Tim
01.08.2018
09:19:22
алсо, не по теме
че за рофл, пацаны
мне щас сказали убрать валидации с модели и перенести это в контроллер. при чем не в форм обжект, а в контроллер. "так удобнее если логики много". при чем валидация базовая совершенно, проверить что атрибут неотрицательный
реально валидации в контроллере удобнее и я не догоняю?

Anton
01.08.2018
09:20:30

Tim
01.08.2018
09:20:34

Alexander
01.08.2018
09:23:51

Tim
01.08.2018
09:24:00
это да
но валидация базовая

Anton
01.08.2018
09:24:06
реально валидации в контроллере удобнее и я не догоняю?
Ох, походу спор за контроль флоу пора заканчивать тоже. Просто это либо пережил, либо нет. Как валидации всего в моделе. Если по твоему вопросу отвечать, у тебя есть такой флоу:
Пользователь запрос шлёт -> бизнес логика выполняется -> вызывается логика персистенс уровня (в базу положить). Что бы продукт было проще поддерживать, надо возвращать проблему как можно раньше. Те если юзер отправил не валидные данные - их желательно быстрее отдать ему обратно, а не тянуть до модели. Это просто рассуждения.
На практике, валидируя в контроллере ты пишешь схему валидации сугубо под каждый вызов. А не одну здоровую схему с кучей условий в моделе

Tim
01.08.2018
09:25:08
погодь, это да
но если валидация базовая

Google

Tim
01.08.2018
09:25:21
не зависит ни от чего
и всегда должна выполняться
то нафига её убирать из модели?

Anton
01.08.2018
09:26:31
Да потому что модель не должна валидировать ничего. Максимум - констрейны базы данных, если они нужны