Spec-Zone.ru › Ruby 2.7

класс Bundler::Plugin::Index

Родитель:
Объект

Атрибуты

commands[R]

Открытые методы класса

new() Показать исходный код
# File lib/bundler/plugin/index.rb, line 25
def initialize
  @plugin_paths = {}
  @commands = {}
  @sources = {}
  @hooks = {}
  @load_paths = {}

  begin
    load_index(global_index_file, true)
  rescue GenericSystemCallError
    # no need to fail when on a read-only FS, for example
    nil
  end
  load_index(local_index_file) if SharedHelpers.in_bundle?
end

Открытые методы экземпляра

command_plugin(command) Показать исходный код
# File lib/bundler/plugin/index.rb, line 98
def command_plugin(command)
  @commands[command]
end

Получить имя плагина, обрабатывающего команду

global_index_file() Показать исходный код
# File lib/bundler/plugin/index.rb, line 80
def global_index_file
  Plugin.global_root.join("index")
end

Путь к файлу глобального индекса

hook_plugins(event) Показать исходный код
# File lib/bundler/plugin/index.rb, line 123
def hook_plugins(event)
  @hooks[event] || []
end

Возвращает список имён плагинов, обрабатывающих заданное событие

index_file() Показать исходный код
# File lib/bundler/plugin/index.rb, line 75
def index_file
  Plugin.root.join("index")
end

Путь к файлу индекса по умолчанию

installed?(name) Показать исходный код
# File lib/bundler/plugin/index.rb, line 102
def installed?(name)
  @plugin_paths[name]
end
installed_plugins() Показать исходный код
# File lib/bundler/plugin/index.rb, line 106
def installed_plugins
  @plugin_paths.keys
end
load_paths(name) Показать исходный код
# File lib/bundler/plugin/index.rb, line 93
def load_paths(name)
  @load_paths[name]
end
local_index_file() Показать исходный код
# File lib/bundler/plugin/index.rb, line 85
def local_index_file
  Plugin.local_root.join("index")
end

Путь к файлу локального индекса

plugin_commands(plugin) Показать исходный код
# File lib/bundler/plugin/index.rb, line 110
def plugin_commands(plugin)
  @commands.find_all {|_, n| n == plugin }.map(&:first)
end
plugin_path(name) Показать исходный код
# File lib/bundler/plugin/index.rb, line 89
def plugin_path(name)
  Pathname.new @plugin_paths[name]
end
register_plugin(name, path, load_paths, commands, sources, hooks) Показать исходный код
# File lib/bundler/plugin/index.rb, line 50
def register_plugin(name, path, load_paths, commands, sources, hooks)
  old_commands = @commands.dup

  common = commands & @commands.keys
  raise CommandConflict.new(name, common) unless common.empty?
  commands.each {|c| @commands[c] = name }

  common = sources & @sources.keys
  raise SourceConflict.new(name, common) unless common.empty?
  sources.each {|k| @sources[k] = name }

  hooks.each do |event|
    event_hooks = (@hooks[event] ||= []) << name
    event_hooks.uniq!
  end

  @plugin_paths[name] = path
  @load_paths[name] = load_paths
  save_index
rescue StandardError
  @commands = old_commands
  raise
end

Этот метод вызывается при установке нового плагина. Он добавляет функции плагина в существующие карты, а также имя и местоположение исходного кода.

@param [String] имя плагина, который нужно зарегистрировать @param [String] путь до установленного плагина @param [Array<String>] load_paths для плагина @param [Array<String>] команды, обрабатываемые плагином @param [Array<String>] исходные коды, обрабатываемые плагином

source?(source) Показать исходный код
# File lib/bundler/plugin/index.rb, line 114
def source?(source)
  @sources.key? source
end
source_plugin(name) Показать исходный код
# File lib/bundler/plugin/index.rb, line 118
def source_plugin(name)
  @sources[name]
end

Закрытые методы экземпляра

load_index(index_file, global = false) Показать исходный код
# File lib/bundler/plugin/index.rb, line 135
def load_index(index_file, global = false)
  SharedHelpers.filesystem_access(index_file, :read) do |index_f|
    valid_file = index_f && index_f.exist? && !index_f.size.zero?
    break unless valid_file

    data = index_f.read

    require_relative "../yaml_serializer"
    index = YAMLSerializer.load(data)

    @commands.merge!(index["commands"])
    @hooks.merge!(index["hooks"])
    @load_paths.merge!(index["load_paths"])
    @plugin_paths.merge!(index["plugin_paths"])
    @sources.merge!(index["sources"]) unless global
  end
end

Считывает файл индекса из каталога и инициализирует переменные экземпляра.

Пропускает исходные коды, если второй параметр true @param [Путь] путь к файлу индекса @param [Булево] является ли файл индекса глобальным индексом

save_index() Показать исходный код
# File lib/bundler/plugin/index.rb, line 156
def save_index
  index = {
    "commands"     => @commands,
    "hooks"        => @hooks,
    "load_paths"   => @load_paths,
    "plugin_paths" => @plugin_paths,
    "sources"      => @sources,
  }

  require_relative "../yaml_serializer"
  SharedHelpers.filesystem_access(index_file) do |index_f|
    FileUtils.mkdir_p(index_f.dirname)
    File.open(index_f, "w") {|f| f.puts YAMLSerializer.dump(index) }
  end
end

Должен вызываться при изменении любых переменных экземпляра. Сохраняет переменные экземпляра в формате YAML. (Переменные экземпляра должны быть только парами ключ-значение String)

Ruby Core © 1993–2017 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API