Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Can';I don’我不想让它工作_Ruby_Rubygems_Awesomeprint - Fatal编程技术网

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