Как сделать рубиновый камень доступным для моих скриптов?
В системе моего веб-хостинга установка и использование гемов требует установки моей собственной копии 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 я по-прежнему получаю сообщение об ошибке, если пытаюсь потребовать этот драгоценный камень.
Итак, у меня есть два вопроса:
- Как сделать этот гем доступным для моих сценариев Ruby, в частности, для файла модели Rails?
- Должен ли я даже поместить команду 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"