如何为我的脚本提供ruby gem?

时间:2010-03-05 13:55:21

标签: ruby-on-rails ruby rubygems image-science

在我的网络主机系统上,安装和使用宝石似乎需要安装我自己的ruby副本。在他们的论坛帮助下,我已经完成了。我正在尝试在Rails应用程序中使用特定的gem(称为Image Science)。

此时,如果我打开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应用程序中,如果我尝试要求该gem,我仍会收到错误。

所以我有两个问题

  1. 如何将这个gem提供给我的Ruby脚本 - 特别是Rails模型文件?
  2. 我是否甚至需要在模型文件中放置“require”命令,还是有其他方式可以加载gem?

1 个答案:

答案 0 :(得分:2)

如果宝石仅由一个模型使用,我通常只需要在该模型上使用'宝石'。如果应用程序要使用gem,比如在视图或控制器中,我创建一个名为app.rb的文件,并将其粘贴在包含所有require语句的config / initializers中。您也可以将它包含在初始化程序块内的config / environment.rb中:

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

这将在项目加载之前需要gem,但是,我遇到了某些宝石的麻烦,比如ruby facets。

对于LD_LIBRARY_PATH,将其放在config / environments / * .rb文件之一(针对您的环境进行自定义,但开发很可能与生产不同)

ENV['LD_LIBRARY_PATH'] = "#{ENV['LD_LIBRARY_PATH']}:#{ENV['JAVA_HOME']}/jre/lib/amd64:#{ENV['JAVA_HOME']}/jre/lib/amd64/server"