5

我在 environment.rb 文件中定义了以下 gem:

  config.gem "authlogic"
  config.gem "paperclip"
  config.gem "pauldix-feedzirra", :lib => "feedzirra", :source => "http://gems.github.com"
  config.gem 'whenever', :lib => false, :source => 'http://gemcutter.org/'

我将它们安装在本地计算机上,一切正常。由于我在共享服务器 (DreamHost) 上工作,我需要解压缩这些 gem 以使它们工作(不能像在我自己​​的计算机上那样安装它们以使它们工作)。

在上传之前,我在本地机器上运行了以下命令:

rake gems:unpack

这在中创建了以下文件夹/vender/gems

authlogic-2.1.3, paperclip-2.3.1.1, pauldix-feedzirra-0.0.18, whenever-0.4.1

所以看起来他们都在那里。

但是,当我rake db:migrate在服务器上运行时,出现以下错误:

Missing these required gems:
  pauldix-feedzirra

由于某种原因,未检测到 feedzirra 解压的 gem。任何人都可以提供有关为什么会发生这种情况的线索以及潜在的解决方案吗?

谢谢!


编辑:谢谢,但是放入 environment.rb 的代码不起作用,并且捆绑程序无法在我的服务器上正确安装。还有其他建议吗?

4

4 回答 4

2

这并不完全是一个答案,但由于我永远无法让 config.gem 正常工作,我建议尽可能使用Bundler 。它可以正常工作,并且可以很好地处理宝石之间的相互依赖关系。据我了解,它还替换了 Rails 3 中的 config.gem 。

于 2010-04-10T04:50:24.147 回答
1

我注意到关于 feedzirra 的两件事:首先,它依赖于其他 3 个 gem,并且其中至少一个构建了本机扩展。我将把它称为“feedzirra”——我不喜欢 github 考虑不周的自动打包惨败。

如果只是前者,那么 rake gems:unpack:dependencies 就可以了。

然而,至少遏制(feedzirra 所依赖的)正在构建扩展,而这些不能简单地解包。您可以让 Dreamhost 安装它们(祝您好运)或将它们安装到用户的本地 gem 目录中。

为此,您需要更新 .gemrc 并确保它包含如下行: :user_install: true

然后耙宝石:安装

除非您的部署环境不允许您构建可执行文件,在这种情况下,您需要购买限制较少的软件包 - 我知道 Dreamhost 确实提供了允许扩展宝石的软件包。

(还有一个单独的 libcurl 问题正在部署......)

于 2010-05-26T09:14:12.147 回答
0

试试Following.把这段代码放在envoirment.rb

  config.load_paths += Dir["#{RAILS_ROOT}/vendor/gems/**"].map do |dir| 
    File.directory?(lib = "#{dir}/lib") ? lib : dir
  end
于 2010-04-10T04:14:14.420 回答
0

不知道我的提示是否有用,因为 feedzirra 是编译扩展(我认为是 CURL)。更好的解决方案是通常在您的服务器上安装 feedzirra gem(它会自行编译)。


您还没有安装(解压)feedzirra gem,而是 pauldix-feedzirra。可能您也需要打开包装的 feedzirra。

尝试添加

config.gem feedzirra

进入 environment.rb 并在本地运行

rake gems:install
rake gems:unpack

看起来feedzirra解压的宝石在/vendor/plugins. 看看 feedzirra 是否会在这些命令之后被复制到那里......

于 2010-04-19T17:14:11.787 回答