- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания Crystal Programming. Введение на основе проекта в создание эффективных, безопасных и читаемых веб-приложений и приложений CLI - Джордж Дитрих
Шрифт:
Интервал:
Закладка:
Всем шардам предлагается подписаться на https://semver.org. Следуя этому стандарту, мы позволяем оператору ~> работать, поскольку можно предположить, что в минорную версию или исправленную версию не будут внесены никакие критические изменения. Или, если да, то выйдет еще один патч, исправляющий регрессию.
Если вы не версионировали свои зависимости, а следующий выпуск зависимости является серьезным ударом, то вам придется либо вернуться к предыдущей версии, либо приступить к работе по обеспечению совместимости вашего приложения с новой версией зависимости. Именно по этой причине я снова настоятельно рекомендую правильно версионировать ваши зависимости, а также следить за обновлениями и читать журналы изменений для ваших зависимостей, чтобы вы знали, чего ожидать при их обновлении.
Предполагая, что вы это сделали и ваши зависимости имеют версии, вы можете обновить их, выполнив команду shards update. Это позволит разрешить и установить последние версии ваших зависимостей в соответствии с вашими требованиями. Он также обновит файл shard.lock новыми версиями.
Проверка зависимостей
В некоторых случаях вы можете просто захотеть убедиться, что все необходимые зависимости установлены, не устанавливая ничего нового. В этом случае можно использовать команду проверки осколков. Он установит ненулевой код выхода, если все зависимости не установлены, а также выведет на терминал некоторую текстовую информацию. Аналогично, команду shards outdated можно использовать для проверки актуальности ваших зависимостей в соответствии с вашими требованиями.
Команду shards prune также можно использовать для удаления неиспользуемых зависимостей из папки lib/. Осколок считается неиспользованным, если он больше не присутствует в файле shard.lock.
Возвращаясь к предыдущему разделу этой главы, как определить, какие осколки доступны для установки в первую очередь? Именно эту тему мы собираемся рассмотреть в следующем разделе. Давайте начнем.
Поиск осколков
В отличие от некоторых менеджеров зависимостей на других языках, у Shards нет централизованного репозитория, из которого их можно установить. Вместо этого шарды устанавливаются из соответствующего исходного источника напрямую путем проверки проекта Git или создания символической ссылки, если используется опция path.
Поскольку нет центрального репозитория с обычными функциями поиска и обнаружения, найти осколки может быть немного сложнее. К счастью, существуют различные веб-сайты, которые либо автоматически собирают с хостингов шарды, либо курируются вручную.
Как и в любой библиотеке, независимо от языка, некоторые библиотеки могут быть заброшены, забыты или стать неактивными. По этой причине стоит потратить некоторое время на изучение всех доступных осколков, чтобы определить, какой из них будет лучшим вариантом, а не просто найти один и предположить, что он сработает.
Ниже приведены некоторые из наиболее популярных и полезных ресурсов для поиска осколков:
• Awesome Crystal: https://github.com/veelenga/awesome-crystal — это реализация https://github.com/sindresorhus/awesome/blob/main/awesome.md для Crystal. Это составленный вручную список осколков кристаллов и других связанных ресурсов в различных категориях. Это хороший ресурс, поскольку он включает в себя различные популярные шарды в экосистеме.
• Shardbox: https://shardbox.org/ — это база данных осколков, созданная вручную, которая немного более сложна, чем Awesome Crystal. Он включает в себя функции поиска и тегирования, информацию о зависимостях и метрики для всех осколков в его базе данных.
• Shards.info: в отличие от двух предыдущих ресурсов, https://shards.info/ — это автоматизированный ресурс, который периодически очищает репозитории из GitHub и GitLab, ориентируясь на репозитории, которые были активны в течение последнего года и чей язык это Кристалл. Это полезный ресурс для поиска новых осколков, но вы также можете столкнуться с некоторыми, которые еще не готовы к производству.
Если вы ищете что-то конкретное, вы сможете найти это, используя один из этих ресурсов. Однако, если вы не можете найти осколок, соответствующий вашим целям, другой вариант — обратиться к сообществу: https://crystal-lang.org/community/#chat. Спросить тех, кто знаком с языком, обычно является отличным источником информации.
Crystal является относительно новым по сравнению с другими языками, такими как Ruby или Python. Из-за этого экосистема Crystal не такая большая, что может привести к тому, что нужный вам осколок устареет или вообще отсутствует. В этом случае либо возрождение старого шарда, либо внедрение собственной версии с открытым исходным кодом может помочь экосистеме расти и позволить другим повторно использовать код.
Пример сценария
Теперь, когда мы довольно хорошо понимаем, как использовать и находить осколки, давайте потратим немного времени и рассмотрим более реальный пример. Допустим, вы разрабатываете приложение и хотите использовать TOML как средство его настройки. Вы просматриваете документацию по API Crystal и видите, что она не включает модуль для обработки анализа TOML. Из-за этого вам придется либо написать свою собственную реализацию, либо установить чью-либо реализацию в качестве шарда.
Вы начинаете просматривать список Awesome Crystal и замечаете, что в категории «Форматы данных» есть осколок toml.cr. Однако, прочитав файл readme, вы решаете, что он не будет работать, поскольку вам требуется поддержка TOML 1.0.0, а Shard предназначен для версии 0.4.0. Чтобы получить больший выбор осколков, вы решаете перейти на shard.info.
При поиске TOML вы находите toml.cr, который предоставляет привязки C к библиотеке синтаксического анализа TOML, совместимой с TOML 1.0.0, и решаете использовать эту. Просматривая выпуски на GitHub, вы замечаете, что Shard еще не имеет версии 1.0.0, а последняя версия — 0.2.0. Чтобы не допустить, чтобы критические изменения вызывали проблемы из-за непреднамеренных обновлений, вы решаете установить версию ~> 0.2.0, чтобы она допускала версию 0.2.x, но не 0.3.x. В конечном итоге вы добавляете в свой файл shard.yml следующее:
dependencies:
ctoml-cr:
github: syeopite/ctoml-cr
version: ~> 0.2.0
Отсюда вы можете запустить shards install, затем запросить шард с помощью команды require “toml-cr" и сразу вернуться к коду вашего собственного проекта.
Как мы видели здесь, шарды могут быть важной частью поддержания эффективности разработки, когда дело доходит до написания программы. Вместо того, чтобы тратить время, которое потребовалось бы для реализации синтаксического анализа TOML, вы можете легко использовать надежную существующую реализацию и вместо этого потратить это время на работу над собственной программой. Однако, как мы видели в этом примере и упоминали ранее, при выборе осколков необходимо проявлять некоторую осторожность. Не все из них равны, будь