Постоянно добавить каталог в Ruby $LOAD_PATH

Я бы хотел использовать параметр awesome_print в каждой консоли IRB или консоли Rails.

Консоль IRB работает довольно хорошо прямо сейчас. Если я бегу irb, Я могу печатать require 'awesome_print' и это работает.

Консоль Rails не так проста. require 'awesome_print' не работает Я, видимо, должен сделать это:

> $LOAD_PATH << '~/.rvm/gems/ruby-2.1.8/gems/awesome_print-1.7.0/lib'

После этого, require 'awesome_print' работает отлично.

Но я определенно не хочу печатать $LOAD_PATH << '~/.rvm/gems/ruby-2.1.8/gems/awesome_print-1.7.0/lib' а потом require 'awesome_print' каждый раз, когда я открываю консоль Rails, чтобы иметь возможность использовать awesome_print, Это кажется смешным.

Итак, как я могу постоянно добавить путь к Ruby's $LOAD_PATH?

Примечание: я не хочу добавлять awesome_print к Gemfile любого конкретного проекта. я хочу awesome_print быть доступным для всех моих проектов Ruby/Rails.

2 ответа

Вы можете просто использовать ~/.irbrc подать и сделать:

require 'awesome_print'

Теперь откройте еще одно приглашение IRB:

irb(main):003:0> ap hash
{
    "a" => "b"
}

Изменить: это не работает в рельсах, кажется, известная проблема.

помещает следующее в .irbrc:

      to_load = %w[
  awesome_print
  coderay
  hirb
  pry
  pry-doc
  pry-remote
  pry-theme
  slop
  yard
].join('|')

regexp = Regexp.new( "(#{to_load})" )

Gem.path.each do |path|
  Dir.new("#{path}/gems").each do |gem_path|
    next if %w[ . .. ].any?{ |d| gem_path == d }

    new_el = "#{path}/gems/#{gem_path}/lib"
    $LOAD_PATH << new_el if new_el =~ regexp
  end
end
Другие вопросы по тегам