Ruby Can';I don’我不想让它工作
看起来是一块很好的宝石,所以我想试试 我参加了我的一个项目,并做了:Ruby Can';I don’我不想让它工作,ruby,rubygems,awesomeprint,Ruby,Rubygems,Awesomeprint,看起来是一块很好的宝石,所以我想试试 我参加了我的一个项目,并做了: gem install awesome_print 它说安装了一个gem,安装了文档,等等 然后,当我在那个项目中时,我去我的Rails控制台进行了尝试,但是当我做了一个需要“awesome_print”的帮助文件时,我得到了一个“无法加载这样的文件” 有人能做到这一点吗?gem安装会将gem代码放在您的计算机上,但除非gem的源代码文件在您的加载路径上,require将无法找到它们bundle exec查看最近的Gemfi
gem install awesome_print
它说安装了一个gem,安装了文档,等等
然后,当我在那个项目中时,我去我的Rails控制台进行了尝试,但是当我做了一个需要“awesome_print”
的帮助文件时,我得到了一个“无法加载这样的文件”
有人能做到这一点吗?
gem安装
会将gem代码放在您的计算机上,但除非gem的源代码文件在您的加载路径上,require
将无法找到它们bundle exec
查看最近的Gemfile.lock
并将此处列出的所有gem的源代码添加到加载路径中。Rails初始化包括让Bundler为您执行此操作
一种解决方案是将awesome\u print
添加到您的Gemfile
。但是,这将导致应用程序依赖于awesome\u print
。或者,您可以在启动Rails控制台后,手动将awome_print
库添加到您的加载路径,然后需要它:
$ rails c
> $LOAD_PATH << path/to/awesome_print-x.x.x/lib
> require 'awesome_print'
> ap {foo: {bar: {baz: :qux}}}
将其添加到您的文件中,如下所示:
gem 'awesome_print', :require => 'ap'
我将它添加到开发组,因为这是我唯一需要它的时间。gem没有任何其他gem依赖项,因此我经常将其添加到gem文件中
另外,将这两行添加到~/.irbrc文件中,以将ap
设置为默认寻呼机:
require "awesome_print"
AwesomePrint.irb!
但是,请注意,如果使用此选项,则当您运行rails c
时,任何未在其GEM文件中安装awesome_print的项目都会引发此错误:
cannot load such file -- awesome_print
取决于~/.irbrc文件中的其他内容,这可能会导致其他副作用,例如弄乱提示。为了避免这些问题,只需在文件的末尾添加两行即可。安装:
如果需要,请将其包含在您的文件中:
将此行添加到文件~/.irbrc中:
重新启动你的外壳!
请注意:我这样做了,但它没有立即工作,可能需要重新启动计算机。。。或者我只需要关闭所有外壳标签,然后再次打开终端 如果您希望在GEM文件中没有它的情况下安装它,请按照以下方法操作:
$ gem install awesome_print
我遇到一个问题,它正在成功安装,但它不在正确的目录中
在这种情况下,只需将其放入.bashrc中,即可设置加载路径:
export PATH="/home/user/.gem/ruby/2.3.0/bin:$PATH"
PATH="`ruby -e 'puts Gem.user_dir'`/bin:$PATH"
用您正在使用的ruby版本替换2.3.0。将用户替换为您的用户名,或者如果您使用的是vagrant,则替换为vagrant
重新加载.bashrc或退出终端以重新加载更改,然后再次安装gem。在计算机上安装gem
gem install awesome_print
获取安装它的路径
gem which awesome_print
将以下配置添加到~/.irbrc
和~/.pryrc
中。每当您启动IRB
或pry
会话时,这将加载Awesome Print
*请记住,$LOAD\u PATH
将保存您通过键入gem获得的任何内容
# ~/.irbc and ~/.pryrc
$LOAD_PATH << "~/.asdf/installs/ruby/2.6.3/lib/ruby/gems/2.6.0/gems/awesome_print-1.8.0/lib/"
require "awesome_print"
AwesomePrint.irb!
#~/.irbc和~/.pryrc
$LOAD_PATH在我的例子中,我挣扎于路径之类的东西,同时错过了一些明显的东西
# which ruby
/usr/bin/ruby
# ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin17]
# locate bin/ruby
/usr/bin/ruby
/usr/local/Cellar/ruby/2.7.2/bin/ruby
/usr/local/opt/ruby/bin/ruby
# /usr/local/opt/ruby/bin/ruby -v
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin17]
#
啊哈!版本积垢。我在用一颗旧红宝石。谢谢,苹果
# sudo mv /usr/bin/ruby /usr/bin/ruby_2.3.7
# sudo ln /usr/local/opt/ruby/bin/ruby /usr/bin/ruby
解决了这个问题
也许我可以告诉brew做些什么来解决问题,但我没有耐心。:-) 您需要将其添加到gem文件中。尽管我们进行了gem安装,但仍然需要“添加到gem文件”?不,您不需要将其添加到gem文件中。显示了一种使用awesome_print而不将其添加到您的文件中的方法。我个人不想在我的Gemfile中添加Aewome_print,因为a)我想在我的系统中的任何Ruby项目中都能使用Aewome_print,b)我不想在特定项目的Gemfile中添加一个只与我个人偏好相关的gem,而不是项目工作的实际要求如果您执行C:\>app
或C:\>app.request
、C:\>app.response
和其他操作,则可以工作。它不会影响方法调用。我的Gemfile中绝对有awesome_print,它安装得很好,但是当我试图在文件中要求它时,我得到了与原始OP相同的错误。我可以gem安装awesome_print
。我可以从irb要求它。但是我不能从我的脚本中要求它!几天前它还在工作!安装后,gem which awesome_print
失败,出现“错误:找不到Ruby库文件或共享库awesome_print”。看起来很有希望,但我在~/.gem/Ruby/2.3.0
中除了一个缓存
目录外,什么都没有,而且里面没有绝妙的打印。请确保使用ruby-v
检查您的ruby版本。另外,我一直在使用pry
,gem install pry
作为语法高亮显示。
gem which awesome_print
# ~/.irbc and ~/.pryrc
$LOAD_PATH << "~/.asdf/installs/ruby/2.6.3/lib/ruby/gems/2.6.0/gems/awesome_print-1.8.0/lib/"
require "awesome_print"
AwesomePrint.irb!
# which ruby
/usr/bin/ruby
# ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin17]
# locate bin/ruby
/usr/bin/ruby
/usr/local/Cellar/ruby/2.7.2/bin/ruby
/usr/local/opt/ruby/bin/ruby
# /usr/local/opt/ruby/bin/ruby -v
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin17]
#
# sudo mv /usr/bin/ruby /usr/bin/ruby_2.3.7
# sudo ln /usr/local/opt/ruby/bin/ruby /usr/bin/ruby