我正在将一个rails应用程序从我的桌面移动到共享主机,并且我遇到了与gem依赖的问题。
我在我的环境中声明了这个.rb:
config.gem "icalendar"
当我第一次尝试启动应用程序的控制台时,我收到错误消息,请求我耙:安装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。看起来不像权限问题。有任何想法吗?感谢您的帮助。
答案 0 :(得分:0)
如果您正在使用Passenger,您应该使用一个小技巧来使GEM_PATH环境变量正常工作。 关注this tutorial。
答案 1 :(得分:0)
在类似的情况下(当服务器启动时,一些pathes不包含在LOAD_PATH变量中) 添加
require 'rubygems'
在包括其他宝石之前帮助了我。
或者您可以手动添加宝石的路径
$LOAD_PATH << '/home/USER/ruby/gems/gems/icalendar-1.1.0/lib'
答案 2 :(得分:0)
请务必在初始化程序段之前设置环境变量
ENV['GEM_PATH'] = '...'
Gem.clear_paths
Rails::Initializer.run ...