@proRuby

Страница 157 из 1594
ojab
25.08.2016
12:36:36
Все привет в этом чате! Есть задача, входные данные: на сервере лежит куча мелких zip архивов(3-5 мб), по запросу пользователя, нужно сформировать один большой zip архив(100-150мб обычно), в котором будут лежать мелкие zip архивы, по определенной выборке. Сейчас сделано быстро и тупо, пользователь переход по урлу, в методе контроллера создается большой zip архив и отдается пользователю через send_file t.path, type: 'application/zip', filename: "#{file_name}.zip" Такое поведение плодит кучу больших архивов, и место на сервере стремится к нулю( Вопрос, существуют ли какие нибудь best practices для таких задач. или как сразу после того как пользователь скачал большой архив, его удалить. Я не понимаю куда копать, чтобы точно знать что пользователь скачал архив, у него может быть разный интернет, и по таймауту удалят считаю плохой идеей( первое что пришло в голову
http://ruby-doc.org/stdlib-2.3.1/libdoc/tempfile/rdoc/Tempfile.html

после закрытия файл сам удалится

Alex
25.08.2016
12:37:03
ojab
25.08.2016
12:37:14
так что пишешь большой архив в tempfile и закрываешь после отдачи

Google
ojab
25.08.2016
12:37:21
а send_file его закроет?
а какая разница?

а send_file его закроет?
http://ruby-doc.org/stdlib-2.3.1/libdoc/tempfile/rdoc/Tempfile.html#class-Tempfile-label-Explicit+close

Alex
25.08.2016
12:37:31
> On POSIX systems, it’s possible to unlink a file right after creating it, and before closing it. This removes the filesystem entry without closing the file handle, so it ensures that only the processes that already had the file handle open can access the file’s contents Круть

ojab
25.08.2016
12:38:30
Не понял
файл надо закрывать ручками или юзать в block'e вне зависимости от того, закрывает ли его используемый метод

Alex
25.08.2016
12:39:06
ojab
25.08.2016
12:39:43
а какая разница?

Alex
25.08.2016
12:39:56
а какая разница?
То что я не смогу закрыть после send_file

ojab
25.08.2016
12:40:32
прозреваю что Tempfile.create { |f| send_file } сработает

Alex
25.08.2016
12:40:51
send_file это как render, нет?

ojab
25.08.2016
12:40:57
да

Alex
25.08.2016
12:40:57
т.е это return

Ну значит не сработает

Google
Alex
25.08.2016
12:41:07
ты из контроллера send_file возвращаешь

Danila
25.08.2016
12:41:43
render это не return

send_file это как render, нет?

да

т.е это return

Alex
25.08.2016
12:42:13
render подразумевает что ты return render

send_file также.

ojab
25.08.2016
12:48:57
f = Tempfile.create('foo') f.write('123123') send_file f f.close вполне работает

render подразумевает что ты return render
render модифицирует self.response и ничего не подразумевает

Alex
25.08.2016
12:49:31
send_file тоже?

ojab
25.08.2016
12:49:38
да

Alex
25.08.2016
12:49:52
Круть, я честно говоря не смотрел как оно работает

Т.е получается что пока send_file полностью не отработает он управление не вернет?

ojab
25.08.2016
12:54:01
да

на самом деле нет https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/metal/data_streaming.rb#L66 https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/http/response.rb#L341 https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/http/response.rb#L319

и дальше response.body дёргает rack, если я всё правильно понимаю

то бишь до этого момента файл должен быть доступен

учитывая # Rack::Sendfile will usually intercept the response and uses # the path directly, so there is no reason to open the file. вестимо лучше делать send_data f.binread

но это если памяти достаточно

в общем случае непонятно что делать, короче

Google
Dan
25.08.2016
13:10:38
окей, тут говорят что ActiveAdmin дружит с 5 рельсами, вроде да? Ну ок, а как с дружбой с OAuth2 ?

I
25.08.2016
13:36:36
не дружил, не было такой задачи) а на пятых рельсах поднимал

Sergey
25.08.2016
13:42:42
Привет? Кто знает что эта хрень значит Настройка nginx Создаем файл с названием нашего проекта в /etc/nginx/sites-available/{project_name}. #TODO добавить в конфиг gzip Отсюда https://github.com/mystand/mystand-wiki/wiki/%D0%94%D0%B5%D0%BF%D0%BB%D0%BE%D0%B9-Rails-%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F-%D1%81-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5%D0%BC-Mina-%D0%B8-Puma

I
25.08.2016
13:44:17
nginx умеет gzip, а в конфиге нет этого, ваш кэп :)

Lupsick
25.08.2016
13:44:23
значит именно то что написано

I
25.08.2016
13:45:19
http://nginx.org/ru/docs/http/ngx_http_gzip_module.html имелось ввиду

Sergey
25.08.2016
13:56:51
сбой в программе? - ясности не добавило, #TODO это куда? и что в конфиг добавлять

в другом мануале было просто файл nginx создать, нахрена тут эта сложность на ровном месте

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

Lupsick
25.08.2016
14:01:56
#TODO это типа надо сделать но не обязательно

Sergey
25.08.2016
14:02:33
комментарий чтоли?

Lupsick
25.08.2016
14:02:44
я неебу че они хотели этим сказать

Lupsick
25.08.2016
14:02:48
пусть комментарий

Nork
25.08.2016
14:03:05
Тебе принципиально этот деплой нужен?

Sergey
25.08.2016
14:03:13
я тоже, комментарий в расширении файла это сильно конечно

Lupsick
25.08.2016
14:04:00
в каком расширении?

это следующая строка мануала

Sergey
25.08.2016
14:05:54
у меня все в одну?

Lupsick
25.08.2016
14:07:09
ты даже скопипастил и там на двух строчках

Sergey
25.08.2016
14:16:23
походу у тебя монитор большой

Google
Sergey
25.08.2016
14:17:54
мои фантазии о гладком деплоее разрушены?

I
25.08.2016
14:18:02
#TODO для разработчиков, а не для вас

Sergey
25.08.2016
14:23:30
там еще пара косяков есть, mina с гитхаба не грузится и строчки нужно брать из полного конфига. Ошибок много очень.

удалил нафиг rvm, проблемы с ним, про деплой ключи еще не написано

Nikolay
25.08.2016
14:29:12
я про деплой еще даже не думаю

Sergey
25.08.2016
14:30:49
лучше заранее подумать, много времени ушло, во всяком случае у меня?

Nikolay
25.08.2016
14:31:34
у меня до деплоя еще с месяца 4

если повезет прототип к новогодним будет

Lupsick
25.08.2016
14:40:49
Лучше прототипы пилить за месяц два

Admin
ERROR: S client not available

ojab
25.08.2016
14:41:03
а ещё лучше за день

Sergey
25.08.2016
14:41:27
теперь с гита не может склонировать, omfg

это не мина, это бомба, каписатрано не так плох

Nikolay
25.08.2016
14:48:03
Лучше прототипы пилить за месяц два
я скриптовую часть только с полгода по вечерам пилил, и клиент ерр месяц где-то уже. а у рельсо проекта сейчас кажется уже третий репозиторий, переписанный нафиг практически с нуля

Sergey
25.08.2016
14:49:47
сработало:) а bundler вручную ставить

Nikolay
25.08.2016
14:50:37
Sergey
25.08.2016
14:54:59
напоследок она напечатала Capistrano большими буквами и выдала туже самую ошибку но с rbenv Migrating database /home/deploy/.rbenv/versions/2.3.1/bin/ruby 2.3.1 /home/deploy/.rbenv/versions/2.3.1/bin/ruby: No such file or directory — 2.3.1 (LoadError) rake aborted!

Sergey
25.08.2016
14:57:44
есть

Google
Sergey
25.08.2016
14:57:50
в нем 2.3.1

удалить?

I
25.08.2016
15:00:11
а в конфигах где-нибудь упоминается 2.3.1?

kolas
25.08.2016
15:00:46
надо установить на серваке 2.3.1 руби

Sergey
25.08.2016
15:01:46
стоит через rbenv на серваке, в gemfile ruby '2.3.1' Теперь пишет Migrating database rake aborted! NoMethodError: undefined method `set_default' for main:Object Did you mean? set_trace_func

I
25.08.2016
15:03:05
а какие gem от mina используются?

gem ‘mina’, require: false попробуйте ну и у всех включений mina тоже require: false

ojab
25.08.2016
15:04:33
а зачем?

I
25.08.2016
15:05:16
судя по гуглу - у mina есть проблема при ее require

https://github.com/mina-deploy/mina/issues/400

Alex
25.08.2016
15:06:13
У меня капистрано + рвм, деплоится как часики и не на одном проекте

рвм кстати норм, другие не смотрел, рвм хватает.

ojab
25.08.2016
15:07:51
зачем вообще на сервер ставить mina?

оно должно быть в group :development

I
25.08.2016
15:08:37
давайте посмотрим Gemfile у Sergey

kolas
25.08.2016
15:09:06
ссылку на гитхаб )

I
25.08.2016
15:09:41
а если у человека свой gitlab висит?

Nikolay
25.08.2016
15:10:30
ну, если висит то возбудить, шоп стоял %)

запросами %:)

Плюшка
25.08.2016
15:11:11
я медленно открываю TCP сокет...

нЭжно пишу туда байтики

ну и в таком духе

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