【问题标题】:Gem located on github don't require gems from rubygems位于 github 上的 Gem 不需要来自 ruby​​gems 的 gem
【发布时间】:2014-10-03 23:13:24
【问题描述】:

我的 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 上的 gem 代码文件中要求来自 ruby​​gems 的 gem 吗?

【问题讨论】:

  • cssmin 文件在哪里?
  • cssmin 是位于 ruby​​gems 上的宝石
  • 你的 .gemspec 中包含 cssmin 吗?
  • 我需要在 .gemspec/Gemfile 中包含我需要的所有 gem?我不能使用要求?
  • 您可以将所需的 gem 包含到 Gemfile 中或使用命令行gem install gemname

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


【解决方案1】:

在编写自己的 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 中阅读有关声明依赖项的更多信息。

【讨论】:

    猜你喜欢
    • 2020-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    • 1970-01-01
    相关资源
    最近更新 更多