Как сделать рубиновый камень доступным для моих скриптов?

В системе моего веб-хостинга установка и использование гемов требует установки моей собственной копии ruby. С их помощью на форуме я справился. Я пытаюсь использовать определенный драгоценный камень (называемый Image Science) в приложении Rails.

На данный момент, если я открою irb и введите следующее, вот что я получаю:

require 'rubygems' #true
require 'image_science' #LoadError: libfreeimage.so.3: cannot open shared 
                         #object file: No such file or directory (etc)....

По совету хоста я возвращаюсь в bash и набираю это:

export LD_LIBRARY_PATH=~/ruby1.8/lib

Эта команда позволяет IRB требовать image_science - возвращает "правда". Насколько я понимаю, он говорит: "Эй, ищи в этом каталоге драгоценные камни".

Проблема в том, что это не меняет доступ к моим скриптам на Ruby. (Это также сохраняется только для сеанса, но я полагаю, что могу добавить его в свой .bashrc.) В моем приложении Rails я по-прежнему получаю сообщение об ошибке, если пытаюсь потребовать этот драгоценный камень.

Итак, у меня есть два вопроса:

  1. Как сделать этот гем доступным для моих сценариев Ruby, в частности, для файла модели Rails?
  2. Должен ли я даже поместить команду require в файл модели, или есть какой-то другой способ загрузки гема?

1 ответ

Если драгоценный камень будет использоваться только одной моделью, я обычно просто требую "драгоценный камень" для этой модели. Если приложение собирается использовать гем, скажем, в представлении или в контроллере, я создаю файл app.rb и помещаю его в config/initializer, который включает все операторы require. Вы также можете включить его в config/environment.rb внутри блока инициализатора:

config.gem 'pg', :lib => 'pg'

который потребует этот драгоценный камень до загрузки проекта, однако, у меня были проблемы с некоторыми драгоценными камнями, такими как грани рубина.

Для LD_LIBRARY_PATH поместите это в один из файлов config / environment /*. Rb (настройте для своих сред, но разработка, скорее всего, отличается от производственной)

ENV['LD_LIBRARY_PATH'] = "#{ENV['LD_LIBRARY_PATH']}:#{ENV['JAVA_HOME']}/jre/lib/amd64:#{ENV['JAVA_HOME']}/jre/lib/amd64/server"
Другие вопросы по тегам