标签: gemspecs

如何修复无效的gemspec?

当我从github安装一个gem它给我错误:

number_internationalizer at /usr/local/rvm/gems/ruby-1.9.3-p194@number_internationalizer/bundler/gems/number_internationalizer-c0d642b04e87 did not have a valid gemspec.
This prevents bundler from installing bins or native extensions, but that may not affect its functionality.
The validation message from Rubygems was:
  "FIXME" or "TODO" is not a description
Run Code Online (Sandbox Code Playgroud)

gemspec是:

# -*- encoding: utf-8 -*-
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'number_internationalizer/version'

Gem::Specification.new do |gem|
  gem.name          = "number_internationalizer"
  gem.version       = NumberInternationalizer::VERSION
  gem.authors       = ["Myself"]
  gem.email         = ["myemail@email.com"]
  gem.description   = %q{Internationalize numbers adding normalization, validation and modifying the number …
Run Code Online (Sandbox Code Playgroud)

rubygems ruby-on-rails gemspecs

12
推荐指数
2
解决办法
1万
查看次数

我如何在我的gemspec中使用github的依赖?

我目前在我的Gemfile中有以下内容:

gem 'voteable_mongo'#,       :github => 'kamilski81/voteable_mongo'
Run Code Online (Sandbox Code Playgroud)

我将我的模型迁移到.gemspec中,但我不确定这将在我的gemspec中看起来如何.我目前有:

s.add_dependency "voteable_mongo"
Run Code Online (Sandbox Code Playgroud)

但这最终会使用错误的依赖(我克隆的原始的)我想使用我的依赖.我怎么能将我的gemspec依赖指向我的github repo?

ruby gemspecs gemfile

11
推荐指数
1
解决办法
3709
查看次数

当我在.gemspec中拥有所有宝石时,如何避免捆绑者警告多个来源?

在我自己的宝石中,我Gemfile看起来基本上是这样的:

source 'https://my.gemserver.com'
source 'https://rubygems.org'

gemspec
Run Code Online (Sandbox Code Playgroud)

.gemspec将所有依赖项列为add_dependencyadd_development_dependency.

截至Bundler 1.8,我收到警告:

Warning: this Gemfile contains multiple primary sources. Using `source` more than
once without a block is a security risk, and may result in installing unexpected gems.
To resolve this warning, use a block to indicate which gems should come from the
secondary source. To upgrade this warning to an error,
run `bundle config disable_multisource true`.
Run Code Online (Sandbox Code Playgroud)

有没有办法解决此警告(没有通过捆绑配置静音)?我在Rubygems规范中找不到任何关于源选项的内容.

ruby rubygems bundler gemspecs

11
推荐指数
2
解决办法
5185
查看次数

珠宝商为我的宝石添加了循环依赖

Rakefile中的Gem(gemfoo)珠宝商声明看起来像这样:

Jeweler::Tasks.new do |gem|
  #truncated
  gem.add_runtime_dependency 'nokogiri', '~> 1.4.1'
  gem.add_development_dependency 'jeweler'
end                             
Run Code Online (Sandbox Code Playgroud)

问题是它在gemfoo.gemspec文件中生成以下依赖项:

s.add_runtime_dependency(%q<gemfoo>, [">= 0"]) s.add_runtime_dependency(%q<nokogiri>, ["~> 1.4.1"]) s.add_development_dependency(%q<jeweler>, [">= 0"])

这不会阻止你发布rubygem但不允许你安装它:

gem install gemfoo
ERROR:  Error installing gemfoo:
    gemfoo requires gemfoo (>= 0)
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?


珠宝商1.6.0

ruby gem rubygems gemspecs

10
推荐指数
1
解决办法
498
查看次数

尝试使用Rails 3将gem商品化为捆绑包,但Gem没有Gemspec

按照以下简单步骤:

gem unpack spree_easy_contact -v 1.0.2 --target vendor/gems

Unpacked gem: '../vendor/gems/spree_easy_contact-1.0.2'
Run Code Online (Sandbox Code Playgroud)

然后在我的Gemfile中添加以下行:

gem "spree_easy_contact", :path => "vendor/gems/spree_easy_contact-1.0.2"
Run Code Online (Sandbox Code Playgroud)

但是当我跑步时它失败了bundle install.

Could not find gem 'spree_easy_contact (>= 0, runtime)' in source at vendor/gems/spree_easy_contact-1.0.2.
Source does not contain any versions of 'spree_easy_contact (>= 0, runtime)'
Run Code Online (Sandbox Code Playgroud)

我相信这是因为gem中没有gemspec文件.有没有办法为它建立一个?

有人知道解决这个问题的方法吗?

gem ruby-on-rails bundler gemspecs

7
推荐指数
1
解决办法
2061
查看次数

有没有办法在用户安装Ruby gem后打印消息?

有没有办法配置gem的gemspec来在有人下载并安装gem之后立即打印重要的信息性消息gem install

ruby rubygems gemspecs

7
推荐指数
1
解决办法
1231
查看次数

gemspec中的条件ruby gem依赖项

我正在构建一个在迁移中使用外键的rails引擎.

    add_foreign_key "theblog_content_nodes",
                    "theblog_content_statuses", column: :content_status_id
Run Code Online (Sandbox Code Playgroud)

从版本4.2rails开始支持外键,但在我们使用foreignergem 之前.如果我们尝试使用foreignerrails 4.2和更新,我们得到一个错误.

所以,因为我要从4.0.1开始支持rails,所以我必须在我的gemspec中使用条件依赖.

我在这里找到了可能的解决方案,但我不知道如何检查gemspec中的rails版本.

# sidekiq-spy.gemspec

if RUBY_VERSION >= '2.1'
  spec.add_development_dependency "curses", "~> 1.0"
end
Run Code Online (Sandbox Code Playgroud)

注意:

我有另一个临时解决方案:我只是检查Foreigner迁移中的可用性.如果它不可用我只是不创建外键:

if defined?(Foreigner)
  add_foreign_key "theblog_content_nodes",
                  "theblog_content_statuses", column: :content_status_id
end
Run Code Online (Sandbox Code Playgroud)

但是我想foreigner为旧的rails版本添加依赖项.

ruby rubygems gemspecs

7
推荐指数
1
解决办法
590
查看次数

gem.add_dependency Jeweler如何格式化git源?

我正在尝试在我的珠宝商Rake文件中指定一个git源:

   gem.add_dependency 'myapp', :git => "git@github.com:myaddress/myapp.git", :branch => "mybranch"
Run Code Online (Sandbox Code Playgroud)

但我遇到格式错误.你知道如何格式化吗?

git gem ruby-on-rails gemspecs

6
推荐指数
1
解决办法
2504
查看次数

在Rails 3的本地gem(冻结宝石)的"捆绑安装"中,不断获取"Source不包含任何版本的......"?

我正在使用一个宝石,vendor/gems/some-api-0.1.0从另一个项目复制,并添加到Gemfile:

gem 'some-api', :path => '~/development/myproj/vendor/gems/some-api-0.1.0'
Run Code Online (Sandbox Code Playgroud)

但如果我执行以下操作,它将失败并显示以下消息:

$ bundle install
Fetching source index for http://rubygems.org/
Could not find gem 'some-api (>= 0)' in source at ~/development/myproj/vendor/gems/some-api-0.1.0.
Source does not contain any versions of 'some-api (>= 0)'
Run Code Online (Sandbox Code Playgroud)

在网上搜索似乎建议需要gemspec?所以我需要在.gemspec哪里写一些,是真的吗?有人可以说明在这种情况下如何做到这一点?

gem ruby-on-rails bundler gemspecs ruby-on-rails-3

5
推荐指数
2
解决办法
6122
查看次数

gem push导致"包元数据丢失"

我正在尝试将我更新的gem推送到rubygems.com并获得以下结果.

 ~/dev/V2/V2GPTI (master) $ gem build v2gpti.gemspec
  Successfully built RubyGem
  Name: v2gpti
  Version: 0.2
  File: v2gpti-0.2-universal-darwin-13.gem
 ~/dev/V2/V2GPTI (master) $ gem push v2gpti.gemspec 
ERROR:  While executing gem ... (Gem::Package::FormatError)
    package metadata is missing in v2gpti.gemspec
 ~/dev/V2/V2GPTI (master) $ 
Run Code Online (Sandbox Code Playgroud)

自上次推送以来,我对我的gem规范所做的唯一更改是添加parseconfig依赖项.这是我的宝石规格.

Gem::Specification.new do |s|
  s.name        = 'v2gpti'
  s.version     = '0.2'
  s.platform = Gem::Platform.local
  s.summary     = 'Git commands for integration with Pivotal Tracker'
  s.description = 'Provides a set of additional Git commands to help developers when working with Pivotal Tracker'
  s.authors     = …
Run Code Online (Sandbox Code Playgroud)

ruby rubygems gemspecs

5
推荐指数
1
解决办法
3048
查看次数

标签 统计

gemspecs ×10

ruby ×6

rubygems ×6

gem ×4

ruby-on-rails ×4

bundler ×3

gemfile ×1

git ×1

ruby-on-rails-3 ×1