簡體   English   中英

將目錄永久添加到 Ruby $LOAD_PATH

[英]Permanently add a directory to Ruby $LOAD_PATH

我想要在每個 IRB 控制台或 Rails 控制台中使用awesome_print的選項。

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 的$LOAD_PATH的路徑?

注:我不想添加awesome_printGemfile任何特定項目。 我希望awesome_print可用於我所有的Ruby/Rails 項目。

您可以簡單地使用 aa ~/.irbrc文件並執行以下操作:

require 'awesome_print'

現在,打開另一個 IRB 提示:

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

編輯:這在 rails 中不起作用,似乎是一個已知問題

將以下內容放入.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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM