
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

Stanislav
07.05.2018
11:38:47


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

Богдан
07.05.2018
13:26:05

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:42:56
почему нет?
Мало ли ) работать то будет работать ) но код стайлы такие большие, что за всеми не уследишь

Andiskiy
07.05.2018
13:44:42

ojab
07.05.2018
13:45:03

Alex
07.05.2018
13:45:32

Богдан
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

Nursultan
07.05.2018
21:57:45

Admin
ERROR: S client not available

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

Mikhail
07.05.2018
22:16:57

Nursultan
07.05.2018
22:17:45

Amit
07.05.2018
22:29:30

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

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

Amit
07.05.2018
22:51:31

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
Тэк, это все очень похоже на задание из курса синкнетики. Если так то наверное лучше ментора спросить)

Amit
07.05.2018
23:05:23

Иван
07.05.2018
23:05:44

Amit
07.05.2018
23:05:49

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

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

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

Иван
07.05.2018
23:25:05

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

Amit
07.05.2018
23:26:56


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 ?