ruby/prelude.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

69 строки
1.5 KiB
Ruby
Исходник Обычный вид История

class Binding
# :nodoc:
def irb
2024-09-17 06:36:19 +03:00
begin
require 'irb'
rescue LoadError, Gem::LoadError
force_activate 'irb'
retry
end
irb
end
# suppress redefinition warning
alias irb irb # :nodoc:
private def force_activate(gem)
Bundler.reset!
2024-09-12 08:14:37 +03:00
builder = Bundler::Dsl.new
2024-09-12 06:50:24 +03:00
if Bundler.definition.gemfiles.empty? # bundler/inline
2024-09-12 08:14:37 +03:00
Bundler.definition.locked_gems.specs.each{|spec| builder.gem spec.name, spec.version.to_s }
2024-09-12 06:50:24 +03:00
else
2024-09-12 08:14:37 +03:00
Bundler.definition.gemfiles.each{|gemfile| builder.eval_gemfile(gemfile) }
2024-09-12 06:50:24 +03:00
end
2024-09-12 08:14:37 +03:00
builder.gem gem
2024-09-12 08:14:37 +03:00
definition = builder.to_definition(nil, true)
definition.validate_runtime!
2024-09-12 08:30:22 +03:00
begin
orig_ui = Bundler.ui
orig_no_lock = Bundler::Definition.no_lock
ui = Bundler::UI::Shell.new
ui.level = "silent"
Bundler.ui = ui
Bundler::Definition.no_lock = true
Bundler::Runtime.new(nil, definition).setup
2024-09-12 09:46:57 +03:00
rescue Bundler::GemNotFound
warn "Failed to activate #{gem}, please install it with 'gem install #{gem}'"
2024-09-12 08:30:22 +03:00
ensure
Bundler.ui = orig_ui
Bundler::Definition.no_lock = orig_no_lock
end
end
end
module Kernel
def pp(*objs)
require 'pp'
pp(*objs)
end
# suppress redefinition warning
alias pp pp # :nodoc:
private :pp
end
autoload :Set, 'set'
module Enumerable
# Makes a set from the enumerable object with given arguments.
def to_set(klass = Set, *args, &block)
klass.new(self, *args, &block)
end unless instance_methods.include?(:to_set) # RJIT could already load this from builtin prelude
end