@proRuby

Страница 1320 из 1594
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
Чтото у меня ругает на value
вместо таких фраз надо присылать 1. твой код 2. ошибку, которую получаешь

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

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

Roman
31.07.2018
15:51:27
https://en.wikipedia.org/wiki/YaST написан на Ruby
homebrew тоже написан на руби

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
Привет! А есть что-нить почитать, чтобы сделать верный выбор между return 1 или raise "ololo" ? Вопрос шире вопроса по языку, но в каждом языке есть свои предпочтени, инстурменты, традиции. Как дела с этим в Ruby?
Вообще рекомендовал бы вам начать с ruby koans а еще взять книжку well grounded rubist. David Black вы этим себе столько проблемм синмите. Что я вам говорю как человек набивший мозолей.

Dima
01.08.2018
08:26:55
Привет! А есть что-нить почитать, чтобы сделать верный выбор между return 1 или raise "ololo" ? Вопрос шире вопроса по языку, но в каждом языке есть свои предпочтени, инстурменты, традиции. Как дела с этим в Ruby?
1) в Ruby нет дихотомии на методы и свойства, как в C++ или JS ил PHP. Есть сообщения к объекту. 2) в Ruby нет операций языка. Есть сообщения обратаываемые методами для объекта. 2+2 => 2.+(2) 3) в Ruby 0 это truly Так что почитайте книжку Well Grounded Rubist (c) David Black с экономите много времени.

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

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

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

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
типа функция возвращает success или failure?
Скорее она возвращает объект со стейтом, в котором ещё данные хранятся

Alexander
01.08.2018
09:01:04
Привет. Кто-нибудь знает, есть ли способ определить, что запись была создана внутри незакоммиченной транзакции?
тебе надо например внутри транзакции получить id созданного объекта? потому что если транзакция не закоммитися этот объект удалится

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

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
ну суть в том что в итоге получается такой код def a result = method if result.status == 'ok' result.body elsif result.status == 'err' # something end end
Но в этом случае ты не завязываешься на логику работы бизнес логики (Сорян за тафтологию). Тебе достаточно соблюсти, что бы возвращался объект с нужным интерфейсом

К тому же, можно забить на ифы, если посмотреть на функциональщину и на нормальный 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
на работу method ты имеешь в виду?
Это не обязательно метод того же класса может быть

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
Нет, потому что видов твоих ошибок по любому больше будет, чем 1 интерфейс объекта. + ты по любому начнёшь АР эксепшены ловить и тут начнётся интересное. Где грань между контролем бизнес логики и вообще всего подряд?
Ну и у тебя пропадает такая штука как «единая точка выхода из логики» (придумал из головы термин), суть в том, что вместо завершения в одном месте и возвращения результата, твоя программа может упасть вообще где угодно. Это увеличивает издержки на поддержку, потому что приходится помнить что и где ловилось

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
Да потому что модель не должна валидировать ничего. Максимум - констрейны базы данных, если они нужны

Страница 1320 из 1594