@rubylang

Страница 1487 из 1684
Igor
07.05.2018
09:32:47
file = kit.to_file(Rails.root.join('tmp', "report_#{@report.id}.pdf"))

в консоли рейлсовой

а потом вызовешь file

увидишь что записывается в редис

Google
Darth
07.05.2018
09:56:50
Там типа хеш адрес

Не фаилпаф

"#<File:0x007fece4d2b5f8>"

В таком виде

Хочу использовать редис, чтобы пдфки были временными и это бы решило вопрос хранения

Если хранить в паблик, то не секурно и нуден жоб для удаления В тмп CI не пускает и всё равно нужен жоб для удаления

Alex
07.05.2018
11:38:17
Подскажите насколько корректно мое решение: Задача искать товары с учетом отношения к тэгу. Делаю Query object Но, для поиска использую searchkick с собственным DSL, а именно вызов метода search на модель. В зависимости от params нужно искать либо в одной модели, либо в ассоциативной модели (has_many), либо вообще в другой модели. Планирую сделать так: 1) В контроллере создать приватный метод, который в зависимости от params определит какой конкретно метод Query object должен вызваться. (далее private_method) 2) Взависимости от params в этом private_method вызвать нужный метод Query object * FindTagItems.new.find_items (если просто по всем items) * FindTagItems.new(tag.id).find_in_tag_items (если по товарам принадлежащим тэгу) * FindTagItems.new(tag.id).find_tag_items_exception (если по другой отдельной модели исключения) 2) В action контроллера сделать как-то так items = private_method

Alex
07.05.2018
11:40:11
Просто не делать же мне 3 разных action в контроллере, чтобы искать итемы

С фронта это будет выглядеть так /cp/search_items/:tag_id в парамсах может быть передано model=exception или model=relation или ничего (как раз для варианта 1)

Другой вариант сделать 2 action в контроллере (первый для просто поиска по итемам) Второй для поиск либо по привязанным итемам, либо по итемам исключений. И Query object не применять вообще

Богдан
07.05.2018
12:59:09
господа, а не подскажите как сформатировать строку так что бы были разделители тысяч?

ojab
07.05.2018
13:01:08
ActiveSupport::NumberHelper.number_to_delimited?

Google
Andiskiy
07.05.2018
13:09:35
как в классе экшн мейлер( mailers/action_mailers.rb ) заинклудить модуль который лежит в директории mailers/concerns/module.rb ? rails 4.1.6

include Module - не работает

Dmitry
07.05.2018
13:15:06
require?

Andiskiy
07.05.2018
13:16:19
require?
тоже пробовал. не работает. А вообще можно ли там концерн создать для общих методов? не хочется повторять

ojab
07.05.2018
13:18:49
spring перезапускал после добавления директории app/mailers/concerns?

Andiskiy
07.05.2018
13:21:26
как его перезапускать?

Богдан
07.05.2018
13:21:30
ojab
07.05.2018
13:21:48
и потом делаешь что хочешь, он сам запустится

Andiskiy
07.05.2018
13:22:31
не помогает

uninitialized constant Mailer::Module

Pavel
07.05.2018
13:25:23
господа, а не подскажите как сформатировать строку так что бы были разделители тысяч?
Если чистый руби, попробуй так def humananize_thousands(number) number.to_s.split('').reverse.each_slice(3).map { |n| n.join }.join(" ").reverse end humananize_thousands(12900780) #=> "12 900 780"

Pavel
07.05.2018
13:26:13
Вот чуть короче

number.to_s.split('').reverse.each_slice(3).map(&:join).join(" ").reverse

ojab
07.05.2018
13:28:14
и оно замечательно сломается на float

Dmitry
07.05.2018
13:28:39
to_i)

Alex
07.05.2018
13:37:27
class FindTagItems attr_reader :tag def initialize(tag = nil) @tag = tag end def call(params) results = find_items(params[:search]) if params[:search_type].nil? results = find_in_tag_items(params[:search]) if params[:search_type] == 'tag_items' results = find_in_tag_items_exception(params[:search]) if params[:search_type] == 'tag_items_exception' results end это smell code? или нормально?

ojab
07.05.2018
13:39:51
Зачем тут присваивание вообще?

Andiskiy
07.05.2018
13:41:05
case params[:search_type] when 'tag_items' #.........

Google
Сергей
07.05.2018
13:42:07
всем привет. посоветуйте - как лучше сделать. сделал авторизацию на сайте. как реализовать регистрацию новых пользователей только зарегистрированным пользователям или 1 человеку? Например, первый может зарегестрироваться, а другие уже нет. Чтобы они могли регистрироваться через первого или через уже зарегистрированных.

Alex
07.05.2018
13:42:11
Зачем тут присваивание вообще?
Ну да, можно и без присваивания, Вы правы. Это присваивание я еще не убрал, раньше чуть другая логика была. Вопрос в другом, насколько правильно использовать if или case внутри call метода?

ojab
07.05.2018
13:42:28
почему нет?

Alex
07.05.2018
13:45:32
если методы назвать как-то в соответствии с params[:search_type] можно так вызывать send("find_#{params[:search_type]}", params[:search_type])
Не совсем предсказуемо, по факту в парамс могут что угодно подсунуть, а значит вначале их нужно проверить через массив или хэш

Богдан
07.05.2018
15:04:12
Господа, а какой гем посоветуете для телеграм бота?

Смерть
07.05.2018
15:05:22
Богдан
07.05.2018
15:07:21
а не подскажите что за фигня, на редисе какая-то ошибка начала вылазить?

Богдан
07.05.2018
15:29:39


ojab
07.05.2018
15:31:56
место кончилось?

Богдан
07.05.2018
15:33:55
та вроде нет, хотя я редис в контейнере использую

докер не ограничивает для своих волюмсов место?

ojab
07.05.2018
15:35:01
зависит от настроек

Богдан
07.05.2018
15:36:05


Rafkat
07.05.2018
15:44:07
Он ещё жив..)

https://www.sublimetext.com/blog/articles/sublime-text-3-point-1

Google
Alexey
07.05.2018
19:07:14
Господа, как мне джуну сделать таблицы у меня есть Здания Подъезды и Тепла_Источники, Buildings создал, теперь немогу продумать как связывать таблицы (на rusrails прочёл про миграции и ассоциации). Бывает так: Sources 1.-1. Buildings (т.к. там поля адрес год постройки, РеформаЖКХ или Фиас…), бывает наоборот Sources 1.-1.* Buildings, а бывает Source 1.-1. Entrances(там будет созданно миграцией поле для комментария в каких подъездах данный источник тепла отапливает) и ассоциация through Entranses 1.- 1. * Buildings Для краткости: S-B (лучше HABTM) B-E2-S2 -E1-S1 B-S (тож лучше чтобы были habtm, но не знаю наличие связей ч/з подъезды что сделает).

Ещё раз вопрос: смущает что есть связи через подъезды. Делать ли мне отдельно таблицу подъезды с полем ID B_ID S_ID Comment а S-B получится друг друга джоин таблицей свяжут и методы нужные появятся, благодаря habtm?

Mihhail
07.05.2018
19:29:50
Задача для джуна в лоб, значит b1–*e1-*s и не надо оптимизировать без прямой задачи где это будет проблемой

Сергей
07.05.2018
21:09:50
А в devise нет что-то вроде before_action :authenticate_user! для sign_up (new_user_registration_path) ? или как можно ограничить переход на new_user_registration_path только для authenticated :user?

Vitaliy
07.05.2018
21:34:12
Можно сгенерировать девайсовские контроллеры и переопределить registrations

Nursultan
07.05.2018
21:53:31
Всем привет. Такой вопрос - является ли операционная система с которой сидит пользователь частью вэб запроса? Можно ли ловить ее через devise gem в каждой сессии?

Сергей
07.05.2018
21:56:59
Ты сам понял что спросил?
Да, нужно ограничить переход на sign_up только после прохождения before_action

Nursultan
07.05.2018
21:57:45
А в devise нет что-то вроде before_action :authenticate_user! для sign_up (new_user_registration_path) ? или как можно ограничить переход на new_user_registration_path только для authenticated :user?
Говоря простым языком - перед тем как завести машину - заведи машину. Чтобы завести машину держи машину заведенной. Ты конечно можешь так сделать но кинь скриншот ошибки потом. Рельса не назовет тебя мудаком?

Admin
ERROR: S client not available

Vitaliy
07.05.2018
22:00:46
Тоже юзкейс интересен

Mikhail
07.05.2018
22:16:57
Всем привет. Такой вопрос - является ли операционная система с которой сидит пользователь частью вэб запроса? Можно ли ловить ее через devise gem в каждой сессии?
По спекам HTTP, реквест содержит в себе user-agent, по которому определятся браузер и платформа. Готовое решение можно посмотреть тут https://github.com/fnando/browser , если без гема то cм. аттрибуты у request.

Amit
07.05.2018
22:29:30


ojab
07.05.2018
22:32:55
абсолютно так же, как и в любом другом массиве

Mikhail
07.05.2018
22:40:31
У тебя train_hash — локальная переменная, попробуй объявить её как переменную инстанса класса. :)

ojab
07.05.2018
22:53:21
можео через цикл, можно через #concat или другой метод

Mikhail
07.05.2018
22:59:53
Объявил, на массив это никак не влияет)
А как ты объявил, если @train_hash = ... , то хэш будет пересоздаваться каждый раз после вызова метода, нужно объявлять либо в конструкторе, либо @train_hash ||= .

Google
Иван
07.05.2018
23:05:01
Тэк, это все очень похоже на задание из курса синкнетики. Если так то наверное лучше ментора спросить)

Иван
07.05.2018
23:05:44
Да, именно оттуда)
Спроси у Виталия, это проще чем потом два раза переделать)

Mikhail
07.05.2018
23:14:06
Только, я бы посоветовал подумать как этот код переписать, у меня много к нему вопросов.

Иван
07.05.2018
23:15:28
@train_hash хотя бы вынести

Amit
07.05.2018
23:18:01
Только, я бы посоветовал подумать как этот код переписать, у меня много к нему вопросов.
Еще бы логику понять, в моем случае то что я записал еквивалентно @train_hash || @train_hash = {:train_type => [], :carriage => [] } ? Каким образом это влияет на то, что в массив добавляются данные поочередно при выполнении метода? Какие еще вопросы? Не укажешь на ошибки?

@train_hash хотя бы вынести
Логично, что-то я не догадался. Выходит я выношу эту переменную за метод и при выполнении метода она автоматом уже добавляет в существующую переменную данные?

Сергей
07.05.2018
23:25:42
Ещё возник вопрос по devise - после sign in никак не переходит на sign up. Это возможно как-то исправить?

Amit
07.05.2018
23:26:56
Ее надо объявлять в конструкторе initialize
Спасибо большое, буду разбираться

Mikhail
07.05.2018
23:47:19
> Каким образом это влияет на то, что в массив добавляются данные поочередно при выполнении метода? После каждого объявления @train_hash = ... создается новый хэш, с двумя пустыми массивами. Поэтому, если ты хочешь добавлять в массивы для уже существующего хэша, то объявлять его можно и нужно только 1 раз. > @train_hash || @train_hash = {:train_type => [], :carriage => [] } Чтобы понять как это работает, почитай про lazy evalution ( https://en.wikipedia.org/wiki/Lazy_evaluation ). Если коротко, то когда переменная не объявлена, то срабатывает вторая часть выражения. Во всех остальных случаях, выражение возвращает и ограничивается первой его частью, т.е. ты избегаешь переприсваивания, в тех случаях когда переменная объявлена. > Какие еще вопросы? Я полагаю, используется слишком много классовых переменных, часть переменных можно вынести в параметры, т.е. def add_train_to_station(train_type, carrage) , т.к. по идее они относятся исключительно к методу add_train_to_station.

Amit
07.05.2018
23:49:16
> Каким образом это влияет на то, что в массив добавляются данные поочередно при выполнении метода? После каждого объявления @train_hash = ... создается новый хэш, с двумя пустыми массивами. Поэтому, если ты хочешь добавлять в массивы для уже существующего хэша, то объявлять его можно и нужно только 1 раз. > @train_hash || @train_hash = {:train_type => [], :carriage => [] } Чтобы понять как это работает, почитай про lazy evalution ( https://en.wikipedia.org/wiki/Lazy_evaluation ). Если коротко, то когда переменная не объявлена, то срабатывает вторая часть выражения. Во всех остальных случаях, выражение возвращает и ограничивается первой его частью, т.е. ты избегаешь переприсваивания, в тех случаях когда переменная объявлена. > Какие еще вопросы? Я полагаю, используется слишком много классовых переменных, часть переменных можно вынести в параметры, т.е. def add_train_to_station(train_type, carrage) , т.к. по идее они относятся исключительно к методу add_train_to_station.
Огромное спасибо, буду разбирать! Только начал практиковать ООП

Dmitry
08.05.2018
05:27:32
> Каким образом это влияет на то, что в массив добавляются данные поочередно при выполнении метода? После каждого объявления @train_hash = ... создается новый хэш, с двумя пустыми массивами. Поэтому, если ты хочешь добавлять в массивы для уже существующего хэша, то объявлять его можно и нужно только 1 раз. > @train_hash || @train_hash = {:train_type => [], :carriage => [] } Чтобы понять как это работает, почитай про lazy evalution ( https://en.wikipedia.org/wiki/Lazy_evaluation ). Если коротко, то когда переменная не объявлена, то срабатывает вторая часть выражения. Во всех остальных случаях, выражение возвращает и ограничивается первой его частью, т.е. ты избегаешь переприсваивания, в тех случаях когда переменная объявлена. > Какие еще вопросы? Я полагаю, используется слишком много классовых переменных, часть переменных можно вынести в параметры, т.е. def add_train_to_station(train_type, carrage) , т.к. по идее они относятся исключительно к методу add_train_to_station.
Вроде ||= должно быть а не ||

Lavrushchik
08.05.2018
06:36:57
Народ, вопрос. Есть input, в нём есть установленное значение. в inspect-моде, в html-разметке этого импута - значения нет. вызываю через консоль с помощью "document.querySelector('.class).value" - значение в браузере отдаёт. пытаюсь делать через execute_script - возвращает ошибку, что элемент nil. как можно всё-таки изъять инфу из инпута? юзаю selenium

Darth
08.05.2018
06:42:02
.val ()

.value - это другое

Свойство value хранит в себе код

Lavrushchik
08.05.2018
06:46:05
document.querySelector('.class').val() ругается inspect что is not a function

Darth
08.05.2018
06:47:54
Мб .val() из jq ?

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