Как сделать рубиновый камень доступным для моих скриптов? - PullRequest
1 голос
/ 05 марта 2010

В системе моего веб-хостинга установка и использование гемов требует установки моей собственной копии 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 - она ​​возвращает 'true'. Насколько я понимаю, он говорит: «Эй, ищи в этом каталоге драгоценные камни».

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

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

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

1 Ответ

2 голосов
/ 05 марта 2010

Если драгоценный камень будет использоваться только одной моделью, я обычно просто требую 'драгоценный камень' для этой модели. Если приложение собирается использовать гем, скажем, в представлении или в контроллере, я создаю файл 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"
...