Выполнить «assets: precompile» по коду / клиенту - PullRequest
0 голосов
/ 25 июня 2019

У меня есть сайт, на котором много изображений (+ 10 КБ) с несколькими сотнями отображаемых на страницах страниц, поэтому для компиляции этих изображений я использую принцип ruby ​​on rails.Проблема в том, что у моего клиента есть возможность изменить эти образы через FTP, и это заставляет меня каждый раз в ssh подключаться к серверу, чтобы запустить команду «assets: precompile».Будет ли способ создать кнопку ссылки, которую мой клиент нажмет, чтобы запустить команду из кода.

Я попытался создать задание cron с гемом Everyever (https://github.com/javan/whenever), который запускает "assets: precompile "каждый час, но она не работает.

every :hour do
  rake "assets:precompile"
end

Я пытался создать этот метод, связанный со ссылкой, но безуспешно также

def compile_image
  system('rvm use 2.2.0@project && cd /var/www/project-folder/ && rake assets:precompile')
  redirect_to imports_index_path, notice: 'Images compiled'
end

Я на ruby2.2 и рельсы 4.2.

Спасибо за помощь

1 Ответ

1 голос
/ 25 июня 2019

Компиляция активов должна использоваться только для статических изображений, используемых в вашем приложении (значки, фоны ...), а не для фактических данных, используемых вашим сайтом.

Это особенно верно, если это динамическое ибольшая коллекция изображений.


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

Я бы хотелпредлагаем вам использовать CDN, чтобы сделать фотографии доступными для браузеров.Ваше приложение Rails должно хранить (или создавать) URL-адреса для CDN, чтобы клиентский браузер мог их извлекать и отображать.

Например, настройте HTTP-сервер, такой как Nginx, на том же компьютере, на котором размещенFTP-сервер, затем создайте согласованную схему URL-адресов, чтобы ваши FTP-файлы могли обслуживаться через HTTP без копирования.

Новые файлы, добавленные на сервер через FTP, автоматически становятся доступными через HTTP, и, возможно, задание cron илиАсинхронный работник может проверять наличие новых файлов и регистрировать их в приложении Rails.

Конечно, это всего лишь пример того, что можно сделать.Есть множество других решений, но без подробностей трудно сказать.

...