Что такое аутентичный способ проверки совместимой версии Ruby для Gem - PullRequest
0 голосов
/ 06 января 2019

Я хочу знать, как узнать, совместим ли конкретный драгоценный камень с определенной версией рубина или нет. Я хочу обновить версию ruby ​​приложения, над которым я работаю. Но я не видел подлинного способа узнать, какая версия ruby ​​поддерживается конкретным гемом.

Сначала я нашел *.gemspec драгоценного камня, который часто (да не всегда) содержит конфигурационную поговорку config.required_ruby_version ... Но я заметил, что не все гемы содержат файл gemspec, я заметил, что у меня в системе есть несколько гемов (например, activerecord), в которых отсутствует Gemfile, тогда как на github у нас есть файл gemspec.

-

Вот ls -lrth с моей локальной машины

Einstiens-MacBook-Pro:activerecord-4.2.7.1 superhero$ ls -lrth
total 128
-rw-r--r--  1 superhero  jingle    51K Dec 23 00:07 CHANGELOG.md
-rw-r--r--  1 superhero  jingle   1.0K Dec 23 00:07 MIT-LICENSE
-rw-r--r--  1 superhero  jingle   6.6K Dec 23 00:07 README.rdoc
drwxr-xr-x  4 superhero  jingle   128B Dec 23 00:07 examples
drwxr-xr-x  5 superhero  jingle   160B Dec 23 00:07 lib

Вот ссылка на репозиторий Activerecord , ниже приведен скриншот, в котором очень много файлов gemspec. enter image description here

Ответы [ 3 ]

0 голосов
/ 09 января 2019

Нашли что-то более интересное в Rubygems.org, Он обслуживает API, который отображает JSON / XML-ответ о геме. Часто упоминается в Rubygems.org, но не в файле gemspec о совместимости версий Ruby. Я бы оставил дискуссию открытой, так как это все еще не Абсолютный аутентичный способ, но это один из способов получить его.

Пример:

curl https://rubygems.org/api/v2/rubygems/activerecord/versions/4.2.7.1.json

{
  "name": "activerecord",
  "downloads": 163190934,
  "version": "4.2.7.1",
  "version_downloads": 6061660,
  "platform": "ruby",
  "authors": "David Heinemeier Hansson",
  "info": "Databases on Rails. Build a persistent domain model by mapping database tables to Ruby classes. Strong conventions for associations, validations, aggregations, migrations, and testing come baked-in.",
  "licenses": [
    "MIT"
  ],
  "metadata": {},
  "sha": "923a64e2ebb9c4529761bf65ed37601a7000af2f3b18f12ea00e9f9ba2a168d2",
  "project_uri": "https://rubygems.org/gems/activerecord",
  "gem_uri": "https://rubygems.org/gems/activerecord-4.2.7.1.gem",
  "homepage_uri": "http://rubyonrails.org",
  "wiki_uri": null,
  "documentation_uri": "http://www.rubydoc.info/gems/activerecord/4.2.7.1",
  "mailing_list_uri": null,
  "source_code_uri": null,
  "bug_tracker_uri": null,
  "changelog_uri": null,
  "dependencies": {
    "development": [],
    "runtime": [
      {
        "name": "activemodel",
        "requirements": "= 4.2.7.1"
      },
      {
        "name": "activesupport",
        "requirements": "= 4.2.7.1"
      },
      {
        "name": "arel",
        "requirements": "~> 6.0"
      }
    ]
  },
  "built_at": "2016-08-10T00:00:00.000Z",
  "created_at": "2016-08-11T17:33:45.486Z",
  "description": "Databases on Rails. Build a persistent domain model by mapping database tables to Ruby classes. Strong conventions for associations, validations, aggregations, migrations, and testing come baked-in.",
  "downloads_count": 6061660,
  "number": "4.2.7.1",
  "summary": "Object-relational mapper framework (part of Rails).",
  "rubygems_version": ">= 0",
  "ruby_version": ">= 1.9.3",
  "prerelease": false,
  "requirements": []
}

и экстракт ruby_version.

Документация по API: https://guides.rubygems.org/rubygems-org-api-v2/

0 голосов
/ 09 января 2019

Поиск файла gemspec и rubygems - хороший способ проверить совместимость с ruby, но, как уже упоминалось выше, было бы бесполезно, если автор гема не писал файл gemspec.

Если вы используете систему управления версиями ruby, такую ​​как rvm и rbenv, создание простого сценария тестирования будет решением. если на вашем локальном компьютере установлены версии Ruby 2.4.1 и 2.5.1, напишите тестовый скрипт , как показано ниже.

#!/usr/bin/env bash

set -e

rubies=("ruby-2.4.1" "ruby-2.5.3")
for i in "${rubies[@]}"
do
  echo "====================================================="
  echo "$i: Start Test"
  echo "====================================================="
  rvm $i exec bundle
  rvm $i exec bundle exec rake test
  echo "====================================================="
  echo "$i: End Test"
  echo "====================================================="
done

rvm выберет версию ruby ​​и запустит тест для выбранной версии ruby.

Если в геме нет юнит-теста, этот тестовый скрипт тоже будет бесполезен. Но драгоценный камень, у которого нет какого-либо модульного теста, не стоит использовать.

Хотя это решение не является подлинным способом проверки совместимой версии ruby, его также стоит использовать для тестирования.

0 голосов
/ 06 января 2019

Предлагаю заглянуть на страницу драгоценного камня rubygems . В левой колонке вы найдете требуемую версию Ruby. Для activerecord вам понадобится как минимум Ruby >= 1.9.3.

Но имейте в виду, что это говорит только о минимальном номере версии. Потому что в то время, когда была выпущена определенная версия, разработчик не мог сказать, может ли определенная будущая версия Ruby внести критические изменения.

Для максимально поддерживаемых версий вам придется изучить примечания к выпуску или проблемы. В вашем примере вы найдете статью , в которой Rails 4.2.8 добавлена ​​поддержка Ruby 2.4. Поэтому я предполагаю, что Rails 4.2.7 поддерживает только Ruby 2.3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...