![](/img/trans.png)
[英]How to append a path to ruby's LOAD_PATH in the context of rails?
[英]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_print
到Gemfile
任何特定項目。 我希望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.