Sha256: 11d374805723dedd8e3f1ff73deacf5f73736ad45284e312c9ef09da4c220486

Contents?: true

Size: 1.29 KB

Versions: 1

Compression:

Stored size: 1.29 KB

Contents

# frozen_string_literal: true

module RailsAdmin
  class Version
    MAJOR = 3
    MINOR = 3
    PATCH = 0
    PRE = nil

    class << self
      # @return [String]
      def to_s
        [MAJOR, MINOR, PATCH, PRE].compact.join('.')
      end

      def js
        JSON.parse(File.read("#{__dir__}/../../package.json"))['version']
      end

      def actual_js_version
        case RailsAdmin.config.asset_source
        when :webpacker, :webpack
          js_version_from_node_modules
        else
          js
        end
      end

      def warn_with_js_version
        return unless Rails.env.development? || Rails.env.test?

        case actual_js_version
        when js
          # Good
        when nil
          warn "[Warning] Failed to detect RailsAdmin npm package, did you run 'yarn install'?"
        else
          warn <<~MSG
            [Warning] RailsAdmin npm package version inconsistency detected, expected #{js} but actually used is #{actual_js_version}.
            This may cause partial or total malfunction of RailsAdmin frontend features.
          MSG
        end
      end

    private

      def js_version_from_node_modules
        JSON.parse(File.read(Rails.root.join('node_modules/rails_admin/package.json')))['version']
      rescue StandardError
        nil
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rails_admin-3.3.0 lib/rails_admin/version.rb