0

我正在将一个 rails 应用程序从我的桌面移动到共享主机,并且遇到了 gem 依赖项的问题。

我在 environment.rb 中声明了这个:

config.gem "icalendar"

当我第一次尝试为应用程序启动控制台时,我收到了错误消息,要求我 rake:install the gem。我使用共享主机 gem 安装过程在 ~/ruby/gems 中安装 gem,并确认 gem 在那里。

ls -rlt ~ruby/gems/gems/icalendar-1.1.0/
total 64
drwxr-xr-x 4 user user  4096 Dec 12 13:15 docs/
drwxr-xr-x 3 user user  4096 Dec 12 13:15 ../
drwxr-xr-x 5 user user  4096 Dec 12 13:18 test/
drwxr-xr-x 3 user user  4096 Dec 12 13:18 lib/

(我在这里手动替换了实际的用户/组)

然后我将它添加到我的 environment.rb 中:

ENV['GEM_PATH'] = "/home/USER/ruby/gems"

(再次,实际用户替换)

下次我运行脚本/控制台时,应用程序加载正常。然后我尝试启动服务器,并收到此错误:

Missing these required gems:
icalendar

You're running:
ruby 1.8.7.22 at /usr/bin/ruby
rubygems 1.3.5 at /home/USER/ruby/gems, /usr/lib/ruby/gems/1.8

我试着稍微调整一下路径,但这没有任何效果。我在这里和整个谷歌上浏览了一下,没有看到任何直接解决这个问题的东西——我认为控制台和服务器都会在环境配置中使用 GEM_PATH。看起来也不是权限问题。有任何想法吗?感谢您对此的帮助。

4

3 回答 3

0

如果你使用Passenger,你应该使用一个小技巧来让GEM_PATH 环境变量工作。按照本教程

于 2009-12-14T08:07:27.923 回答
0

在类似的情况下(当服务器启动时,某些路径未包含在 LOAD_PATH 变量中)添加

require 'rubygems'

在包括其他宝石帮助我之前。

或者您可以手动添加路径到您的宝石

$LOAD_PATH << '/home/USER/ruby/gems/gems/icalendar-1.1.0/lib'
于 2009-12-14T09:21:48.163 回答
0

请务必在初始化程序块之前设置环境变量:

ENV['GEM_PATH'] = '...'
Gem.clear_paths

Rails::Initializer.run ...
于 2009-12-14T16:02:08.473 回答