Не могу заставить работать гем awesome_print

awesome_print выглядит довольно симпатично, поэтому я хотел попробовать его.

Я пошел в один из моих проектов и сделал:

gem install awesome_print

и он говорит, что один драгоценный камень установлен, документация установлена ​​и т. д.

Затем, пока я нахожусь в этом проекте, я пошел к своей консоли Rails, чтобы попробовать его, но когда я сделал require "awesome_print" как говорится в их справочном файле, я получаю сообщение "не могу загрузить такой файл".

Кто-нибудь получил это на работу?

7 ответов

Решение

gem install поместит код драгоценного камня на ваш компьютер, но если файлы исходного кода драгоценного камня не находятся на вашем пути загрузки, require не смогу их найти. bundle exec смотрит на ближайший Gemfile.lock и добавляет исходный код для всех драгоценных камней, перечисленных там, к вашему пути загрузки. Инициализация Rails включает в себя то, что Bundler сделает это за вас.

Одним из решений является добавление awesome_print в ваш Gemfile. Однако это приведет к тому, что ваше приложение awesome_print как зависимость. В качестве альтернативы вы можете вручную добавить awesome_print Библиотека к вашему пути загрузки после запуска консоли Rails и последующего требования:

$ rails c
> $LOAD_PATH << path/to/awesome_print-x.x.x/lib
> require 'awesome_print'
> ap {foo: {bar: {baz: :qux}}}

Если вы используете RVM, путь, вероятно, будет что-то вроде

~/.rvm/rubies/ruby-x.x.x-pxxx@your_gemset_name/gems/awesome_print-x.x.x/lib

Добавьте его в свой Gemfile следующим образом:

gem 'awesome_print', :require => 'ap'

Я добавляю это в группу разработчиков, так как это единственный раз, когда мне это нужно. У этого драгоценного камня нет других зависимостей, поэтому я обычно добавляю его в свой Gemfile.

Кроме того, добавьте эти две строки в файл ~/.irbrc, чтобы установить ap быть вашим пейджером по умолчанию:

require "awesome_print"
AwesomePrint.irb!

Обратите внимание, что если вы используете это, однако, любые проекты, где awesome_print не установлен в его Gemfile, вызовут эту ошибку при запуске rails c:

cannot load such file -- awesome_print

В зависимости от того, что еще у вас может быть в вашем файле ~/.irbrc, это может вызвать другие побочные эффекты, такие как испортить ваш запрос. Чтобы избежать этого, просто добавьте две строки в самый конец этого файла.

установить его:

$ gem install awesome_print

включите его в свой GemFile, если хотите:

gem 'awesome_print', :require => 'ap'

добавьте эту строку в файл ~/.irbrc:

require 'awesome_print'
AwesomePrint.irb!

перезагрузите вашу оболочку!

просто примечание: я сделал это, и это не сработало сразу, вероятно, нужно перезагрузить компьютер... или мне просто нужно было закрыть все вкладки оболочки и снова открыть терминал!

Установите драгоценный камень на свою машину

gem install awesome_print

Получить путь, по которому он установлен

gem which awesome_print

Добавьте следующую конфигурацию в свой ~/.irbrc а также ~/.pryrc. Это будет загружать Awesome Print всякий раз, когда вы запускаетеIRB или pry сеанс.

*Помнить $LOAD_PATH будет удерживать все, что вы получили от набора текста 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!

Если вы хотите установить его, не имея в своем Gemfile, вот как это сделать:

$ 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"

замените 2.3.0 версией ruby, с которой вы работаете.
замените пользователя своим именем или, если вы используете vagrant, замените его на vagrant

перезагрузите ваш.bashrc или выйдите из Терминала, чтобы перезагрузить изменения, затем снова установите гем.

В моем случае я боролся с 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]
#

Ага! Версия сырой. Я использовал старый рубин. Спасибо, Apple!

      # sudo mv /usr/bin/ruby /usr/bin/ruby_2.3.7
# sudo ln /usr/local/opt/ruby/bin/ruby /usr/bin/ruby

Решил проблему!

Вероятно, я мог бы кое-что сказать brewделать, чтобы исправить положение, но я был нетерпеливым. :-)

Одна вещь, которая работала для меня, состояла в том, что после ввода 'require 'awesome_print'' я бы поставил 'ap command',

Например:

ap Event.all

Другие вопросы по тегам