位于github上的宝石不需要来自rubygems的宝石

时间:2014-08-11 07:32:39

标签: ruby-on-rails ruby-on-rails-3 git github rubygems

我的Gemfile中有这一行:

gem 'gem_name', '1.0.27', :git => "git@github.com:company/gem_name.git"

gem_name是我在github上构建的一个gem,在我写的一个gem代码文件中:

require 'cssmin' 

(我在gem代码文件中有更多的gem要求)。

当我在我的应用程序中运行bundle时,一切正常并且gem_name已正确安装 但是当我运行rails s时,我收到了这个错误:

  

无法加载此类文件 - cssmin

你知道为什么我不能在我存储在github上的宝石代码文件中需要来自rubygems的宝石吗?

1 个答案:

答案 0 :(得分:0)

编写自己的gem时,应将其所有要求都包含在.gemspec文件中。这样,gem程序可以确保在用户运行gem install gem_name时安装所有依赖项,并且您的代码在运行require 'my_dependency'行时不会崩溃。

如果要在代码中使用其他库,则需要这两个部分。 Gemspec文件确保安装依赖项; require语句在代码运行时加载它。

在这种情况下,您应该使用Gemspec中的add_runtime_dependency method。像这样:

Gem::Specification.new do |s|
  # Required attributes omitted
  s.add_runtime_dependency('cssmin') # If you don't care which version is installed
  s.add_runtime_dependency('nokogiri', '>= 1.2') # If you want a version greater than or equal to 1.2
  s.add_runtime_dependency('kaminari', '~> 1.1') # If you want a version between 1.1 and 1.9.
end

您可以在the Rubygems documentation中阅读有关声明依赖关系的更多信息。