Rails не учитывает указанную версию при создании приложения - PullRequest
0 голосов
/ 06 декабря 2018

Когда я создаю приложение с использованием rails с указанной версией, это не соблюдается, хотя Gemfile и записывает 5.2.1, он обновляется до 5.2.2 в файле Gemfile.lock

Это то, что я сделал

gem install rails -v 5.2.1

rails _5.2.1_ new backend-solidus -d postgresql

однако во время установки журнала это показывает:

Fetching rails 5.2.2
Installing rails 5.2.2

Полный файл журнала: https://pastebin.com/qC6d2wws

1 Ответ

0 голосов
/ 06 декабря 2018

Это намеренно;это специально.

Вот соответствующий исходный код из текущей rails главной ветви:

  def rails_gemfile_entry
    if options.dev?
      [
        GemfileEntry.path("rails", Rails::Generators::RAILS_DEV_PATH)
      ]
    elsif options.edge?
      [
        GemfileEntry.github("rails", "rails/rails")
      ]
    else
      [GemfileEntry.version("rails",
                        rails_version_specifier,
                        "Bundle edge Rails instead: gem 'rails', github: 'rails/rails'")]
    end
  end

  def rails_version_specifier(gem_version = Rails.gem_version)
    if gem_version.segments.size == 3 || gem_version.release.segments.size == 3
      # ~> 1.2.3
      # ~> 1.2.3.pre4
      "~> #{gem_version}"
    else
      # ~> 1.2.3, >= 1.2.3.4
      # ~> 1.2.3, >= 1.2.3.4.pre5
      patch = gem_version.segments[0, 3].join(".")
      ["~> #{patch}", ">= #{gem_version}"]
    end
  end

В частности, обратите внимание на оператор ~>.

Использование этого означает, что, хотя ваш Gemfile будет указывать версию ~> 5.2.1, фактическая версия, которую bundler выберет для установки, это "последняя версия, >= 5.2.1 и < 5.3.0Msgstr ".

Патч-релизы содержат небольшие изменения, такие как исправления мелких ошибок и исправлений безопасности.Крайне редко ваш код будет ломаться из-за обновления версии патча;гораздо больше вероятно, что вы останетесь уязвимыми к уязвимости безопасности, если не сможете обновить.

Поэтому rails по умолчанию устанавливает последнее исправление изуказанная версия.


Если вы действительно хотите явно вернуться к рельсам 5.2.1, вы можете отредактировать Gemfile, сказав:

rails '5.2.1'

, затем повторите bundle update.

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