代码之家  ›  专栏  ›  技术社区  ›  Yuval Karmi

打开gems包装[轨道2.3.5]

  •  5
  • Yuval Karmi  · 技术社区  · 16 年前

    我的environment.rb文件中定义了以下gems:

      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的代码不起作用,Bundler无法在我的服务器上正确安装。还有什么建议吗?

    4 回复  |  直到 16 年前
        1
  •  2
  •   Alex Korban    16 年前

    这不是一个确切的答案,但是由于我无法让config.gem正常工作,我建议使用 Bundler 只要我能。它只起作用,并且很好地处理宝石之间的相互依赖关系。它还根据我的理解替换了Rails3中的config.gem。

        2
  •  1
  •   Judson    16 年前

    我注意到Feedzirra有两件事:首先,它依赖于其他3个gem,并且至少其中一个构建本机扩展。我要称之为“Feedzirra”——我不喜欢Github被错误考虑的自动包装失败。

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

    但是,至少路缘石(Feedzirra依赖于此)正在建造扩展,而这些扩展不能简单地解包。您可以让DreamHost安装它们(祝您好运),也可以将它们安装到您用户的本地gem目录中。

    要做到这一点,您需要更新.gemrc并确保它包含一行,如: :用户安装:真

    然后耙宝石:安装

    除非您的部署环境不允许您构建可执行文件,在这种情况下,您需要为一个限制较少的包进行解包—我知道DreamHost确实提供了允许扩展gems的包。

    (另一个问题是libcurl的部署…)

        3
  •  0
  •   Salil    16 年前

    尝试以下操作。将此代码放入envoirment.rb

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

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


    您尚未安装(解包)Feedzirra Gem,但Pauldix Feedzirra。也许你也需要把Feedzirra打开。

    尝试添加

    config.gem feedzirra
    

    进入environment.rb并在本地运行

    rake gems:install
    rake gems:unpack
    

    看起来像 feedzirra 未包装的宝石丢失在 /vendor/plugins . 看看Feedzirra是否会在这些命令之后被复制到那里…

    推荐文章