Включая задачи граблей в драгоценных камнях

Вот реализация Java формула Haversine . Я использую это в проекте вычислить расстояние в милях между lat/longs.

public static double distFrom(double lat1, double lng1, double lat2, double lng2) {
    double earthRadius = 3958.75; // miles (or 6371.0 kilometers)
    double dLat = Math.toRadians(lat2-lat1);
    double dLng = Math.toRadians(lng2-lng1);
    double sindLat = Math.sin(dLat / 2);
    double sindLng = Math.sin(dLng / 2);
    double a = Math.pow(sindLat, 2) + Math.pow(sindLng, 2)
            * Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2));
    double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
    double dist = earthRadius * c;

    return dist;
    }

59
задан Oxfist 22 July 2018 в 15:16
поделиться

1 ответ

Подходящим местом являются / tasks и lib / tasks . Я использую / tasks , когда задачи предназначены для работы или управления самим Gem, я использую lib / tasks , когда задачи предназначены для загрузки пользователями Gem.

Это связано с тем, что у пользователей могут возникнуть проблемы с загрузкой файлов ruby ​​вне папки lib , которая автоматически добавляется к пути загрузки, когда требуется Gem.

Также я предлагаю вам использовать * .rake расширение. В настоящее время почти каждая среда IDE связывает расширение .rake с файлами ruby, а самая продвинутая среда IDE может даже анализировать контент как сценарии rake. Расширение .rake также является лучшим выбором для разработчиков, потому что вы можете обеспечить немедленный обзор содержимого внутри файла.

По поводу вашего второго вопроса, в настоящее время нет возможности заставить Rails загружать ваши rake-задачи, когда плагин упакован как Gem. Вам необходимо включить файл rake в свое приложение (в другой файл rake или в основной файл Rakefile) или клонировать задачи rake в свой проект.

Если вы устанавливаете плагин в папку поставщика, все *. Файлы rake в каталогах задач и lib / tasks автоматически загружаются в область видимости Rails следующими двумя строками.

Dir["#{RAILS_ROOT}/vendor/plugins/*/tasks/**/*.rake"].sort.each { |ext| load ext }
Dir["#{RAILS_ROOT}/vendor/plugins/*/lib/tasks/**/*.rake"].sort.each { |ext| load ext }
31
ответ дан 24 November 2019 в 18:29
поделиться