我的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的宝石吗?
答案 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中阅读有关声明依赖关系的更多信息。