Nano Hash - криптовалюты, майнинг, программирование

Конвейер ресурсов Grails — ничего не доступно

У меня есть приложение Grails, которое в настоящее время работает под 2.2.4. Я решил обновить его до 2.4.0 и при этом преобразовать его для использования конвейера активов для моих css/js/images. Я поместил все свои старые ресурсы в новые каталоги assets/....

Я использую IntelliJ 12.1.7 для запуска приложения в режиме отладки для разработки. Приложение запускается нормально, но ни один из моих активов не доступен. Томкэт 7.0.52.1. Ява 7.0.55. Я вижу такие ссылки, как «main.css?compile=false» в необработанном html, но сам ресурс недоступен, когда я пытаюсь просмотреть его непосредственно в браузере (http:\localhost:8080\assets\stylesheets\main .css). Я также немного покажу здесь свое невежество и спрошу, что такое "?compile=false". Это ново для меня.

Я провел «чистый Грааль». Нужно ли мне внести какие-либо изменения в config.groovy или любые другие файлы? Я внес изменения, чтобы удалить ссылки на старую систему «ресурсов» в соответствии с документацией Grails.

Есть идеи, почему активы, кажется, не подхватываются плагином?

ОБНОВЛЕНИЕ: что-то должно быть потеряно в переводе, потому что, когда я создавал приложение с нуля, активы загружались очень хорошо, как я и ожидал, когда ссылался на документацию. Я перепроверил настройки в моих файлах BuildConfig и Config, и они совпадают между двумя приложениями. Они также используют одну и ту же версию всех плагинов. Если я найду решение, я опубликую его здесь, но, честно говоря, я думаю, что мой следующий порядок действий будет заключаться в постепенном начале импорта фрагментов из моего приложения во вновь созданное, потому что, похоже, где-то спрятан параметр, который Я не знаю, что настраивается во время создания 2.4.0, чего нет в моей старой кодовой базе. Или есть некоторые устаревшие плагины «ресурсов», которые не были удалены. К счастью, не огромное приложение.

ОБНОВЛЕНИЕ 2: я нашел источник проблемы. Мое приложение использует Apache Shiro для обеспечения безопасности и аутентификации. Установка плагина не вызывает проблем, но как только я запускаю «grails shiro-quick-start», конвейер ресурсов перестает работать. Я добавляю тег к этому вопросу в надежде, что кто-то со знанием Широ сможет помочь. Я также создал ошибку в grails jira (https://jira.grails.org/browse/GPSHIRO-79)

Обновление 3: найден и реализован обходной путь. См. ссылку jira выше.


  • compile=false это связано с производственным режимом и т. д., так что в основном да, он загрузил его. 27.05.2014

Ответы:


1

были похожие проблемы, вчера вечером начал изучать активы, чтобы обновить плагин.

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

Все загружается нормально? может случиться так, что порядок, в котором вещи загружаются, не соответствует правильному формату:

для css: application.css

взгляните на выше, затем посмотрите на содержащую папку

Для JS: application.js

Взгляните на объявления, а затем следуйте структуре папок - чтобы иметь больше смысла.

Короче говоря, CSS должен быть в порядке, но JS требует определенного порядка в зависимости от того, что вы загружаете.

так для js

//= require jquery/jquery
//= require bootstrap/bootstrap
//= require angular/angular
//= require angular-route/angular-route
//= require angular-resource/angular-resource.min
//= require angular-table/ng-table
//= require myapp/index
//= require myapp/services
//= require myapp/arrestedDirectives
//= require_tree custom-folder
//= require_tree views
//= require_self

Это загрузит файлы в том порядке, в котором они определены, прямо внизу требуется имя папки дерева для загрузки подстановочного знака в эти папки (где порядок не имеет значения)

для CSS

*= require mobile
*= require_self
*= require bootstrap
*= require bootstrap-glyphicons

это порядок, определенный

в js

require_tree custom-userapp

это загрузит все в папку custom-userapp без определенной структуры, если бы я хотел определенный порядок, который мне пришлось бы добавить:

//= require custom-userappthis/js1
//= require custom-userappthis/js2

-- E2A: полное объяснение активов, насколько я понимаю на данный момент:

Итак, в верхней части вашего application.js показано:

//= require jquery
//= require_tree .
//= require_self

Самостоятельный 3 типа декламации:

1 require 
//=require         -- This is a custom file or folder/file
 //require folder/file   --> [load folder/file.js] 

2. require_tree 

//require_tree .             --> [everything in current  folder]
//require_tree folder     --> [ this one is wild card in the folder ]

3. require_self -itself - this can contain global declarations   
//require_self 

Теперь это основной файл application.js, находящийся в папке grails-app/assets/javascripts/.

  <asset:javascript src="application.js"/>
  <asset:stylesheet href="application.css" />

Итак, если вы сейчас перейдете к grails-app/views/layouts/main.gsp, вы найдете как application.js, так и приложение css, объявленные {как указано выше}.

Формат файла css немного отличается, так как он начинается с * и следует форматированию, указанному выше.

*= require main
*= require mobile
*= require_self
*/

Это, пока все определено, должно загружаться на конечной странице через два вышеприведенных application.js и css.

Если бы вы хотели, вы не могли бы определить что-то в js, требующем определенного определения, а затем загрузить другие наборы вызовов, подобные этому:

 <asset:javascript src="myfolder/application.js"/>
  <asset:stylesheet href="myfolder/application.css" />

и следуйте приведенному выше форматированию файла, если вы хотите добиться той же конфигурации ресурсов, или замените application.js на jquery-ui.js и загрузите физический файл js jquery-ui.js.

Не знаете, зачем вам это нужно для обычного/практичного веб-сайта, поскольку, если все правильно объявлено в основных файлах, оно должно работать.

Я упомянул консоль веб-разработчика — это инструмент разработчика Firefox, и в основной консоли он показывает, какие URL-адреса загружены — вы сможете идентифицировать файлы css/js и статус 200, если все в порядке.

Я обновил testingarrested до версии 2.4, поэтому он установил вещи с активами:

Последнее обновление:

Если у вас есть, скажем, пара файлов CSS, скажем, вы установили папку начальной загрузки, в которой были css/js, и вам нужен был только этот файл css для всего вашего сайта и, возможно, другой пользовательский файл css, который вы получали из другой папки из папки js. Затем удалите папку таблиц стилей и просто добавьте свои ссылки js в application.js Затем в ваш main.gsp

    <asset:stylesheet href="bootstrap-css/css/bootstrap.css" />
    <asset:stylesheet href="customfolder/css/custom.css" />
    <asset:javascript src="application.js"/>

Думаю, на этом активы заканчиваются. Принимаются пустые чеки.

27.05.2014
  • Итак, нужно ли мне указывать мои скрипты/и т. д. в файлах application.*, а также включать тег в gsp (например, ‹asset:stylesheet src=main.css/›? У меня сложилось впечатление, что либо/или . 27.05.2014
  • Почему бы вам не установить арестованный плагин в версии 2.4 и не следовать инструкциям, чтобы лучше понять, что я сделал. Короче говоря, не просто определите их в этом основном application.js и css, а затем в ваших макетах/main.gsp вы найдете их обоих объявленными, и они сами с объявлениями будут загружать вещи, как вы определили или намеревались 27.05.2014

  • 2

    Обходной путь (и, возможно, решение) состоит в том, чтобы изменить следующую строку в ShiroSecurityFilters.groovy с

    if (!controllerName) return true
    

    to

    if (!controllerName || controllerName == 'assets') return true
    

    Подробности смотрите в обновлении 3 в исходном посте.

    02.06.2014
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..