繁体   English   中英

如何使红宝石宝石可用于脚本?

[英]How do I make a ruby gem available to my scripts?

在我的Web主机的系统上,安装和使用gems似乎需要安装我自己的ruby副本。 在他们在论坛上的帮助下,我已经做到了。 我正在尝试在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应用程序中,如果尝试使用该gem仍然会出错。

所以我有两个问题

  1. 如何使该gem对我的Ruby脚本可用-特别是Rails模型文件?
  2. 我是否应该甚至在模型文件中放入“ require”命令,还是应该以其他方式加载gem?

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

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

这将需要在项目加载之前使用该宝石,但是,对于某些宝石(例如红宝石刻面),我遇到了麻烦。

对于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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM