在我的网络主机系统上,安装和使用宝石似乎需要安装我自己的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,我仍会收到错误。
所以我有两个问题:
答案 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"