拆包宝石[Rails 2.3.5]

时间:2010-04-10 04:11:01

标签: ruby-on-rails deployment rubygems dreamhost feedzirra

我在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),我需要解压缩这些宝石以使它们工作(不能像我在自己的计算机上那样安装它们以使它们工作)。

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

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未包装的宝石。任何人都能提供一个关于为什么会发生这种情况以及潜在解决方案的线索吗?

谢谢!


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

4 个答案:

答案 0 :(得分:2)

这不是答案,但由于我无法让config.gem正常工作,我建议尽可能使用Bundler。它只是工作,它很好地处理宝石之间的相互依赖性。它也取代了我理解的Rails 3中的config.gem。

答案 1 :(得分:1)

我注意到关于feedzirra的两件事:首先,它取决于其他3个宝石,其中至少有一个构建原生扩展。我将其称为“feedzirra” - 我不是github考虑不当的自动包装惨败的粉丝。

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

但是,至少curb(feedzirra所依赖的)是构建扩展,而那些不能简单地解压缩。您可以让Dreamhost安装它们(祝你好运)或将它们安装到用户的本地gem目录中。

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

然后rake gems:install

除非你的部署环境不允许你构建可执行文件,否则你需要为一个不太受限制的程序包进行shell外壳 - 我知道Dreamhost确实提供了允许扩展gems的程序包。< / p>

(还有单独的libcurl部署问题......)

答案 2 :(得分:0)

尝试在environment.rb中输入此代码

  config.load_paths += Dir["#{RAILS_ROOT}/vendor/gems/**"].map do |dir| 
    File.directory?(lib = "#{dir}/lib") ? lib : dir
  end

答案 3 :(得分: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复制到那里......