【问题标题】:Permanently add a directory to Ruby $LOAD_PATH将目录永久添加到 Ruby $LOAD_PATH
【发布时间】:2017-02-01 16:20:38
【问题描述】:

我希望可以在每个 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' 工作正常。

但我绝对不希望每次打开 Rails 控制台时都输入$LOAD_PATH << '~/.rvm/gems/ruby-2.1.8/gems/awesome_print-1.7.0/lib',然后输入require 'awesome_print',以便能够使用awesome_print。这似乎很荒谬。

那么,我怎样才能永久添加到 Ruby 的 $LOAD_PATH 的路径?

注意:我不想awesome_print 添加到任何特定项目的Gemfile。我希望我的 Ruby/Rails 项目所有都可以使用awesome_print

【问题讨论】:

标签: ruby-on-rails ruby awesomeprint


【解决方案1】:

您可以简单地使用 ~/.irbrc 文件并执行以下操作:

require 'awesome_print'

现在,打开另一个 IRB 提示符:

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

编辑:这在 Rails 中不起作用,似乎是 known issue

【讨论】:

  • 这取决于您调用 irb 的 ruby​​ 版本。如果您的 gem 没有为该版本的 ruby​​ 安装,它将失败。您可以随时使用ruby ~/.irbrc 进行检查以查看是否收到任何警告。 rails 问题是已知的。
  • 对不起,它在 IRB 中确实对我有用。我不知道为什么它最初不起作用,但现在它起作用了。
  • 您链接到的问题似乎是 Rails 忽略 ~/.irbrc 的问题。我没有那个问题。 Rails 接收到~/.irbrc 很好,它只是说cannot load such file -- awesome_print,大概是因为它在$LOAD_PATH 中缺少正确的路径。
  • 有趣,我无法获取我的 irbrc 文件。您的 Rails 应用程序中的 ruby​​ 版本是否相同?你可以在 ~/.irbrc 文件的顶部puts ruby -v 来确定。
【解决方案2】:

将以下内容放入.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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-25
    • 2023-04-01
    • 2018-04-14
    • 2015-07-28
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多