当我从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) 我目前在我的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?
在我自己的宝石中,我Gemfile看起来基本上是这样的:
source 'https://my.gemserver.com'
source 'https://rubygems.org'
gemspec
Run Code Online (Sandbox Code Playgroud)
我.gemspec将所有依赖项列为add_dependency和add_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规范中找不到任何关于源选项的内容.
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
按照以下简单步骤:
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的gemspec来在有人下载并安装gem之后立即打印重要的信息性消息gem install?
我正在构建一个在迁移中使用外键的rails引擎.
add_foreign_key "theblog_content_nodes",
"theblog_content_statuses", column: :content_status_id
Run Code Online (Sandbox Code Playgroud)
从版本4.2rails开始支持外键,但在我们使用foreignergem 之前.如果我们尝试使用foreigner与rails 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版本添加依赖项.
我正在尝试在我的珠宝商Rake文件中指定一个git源:
gem.add_dependency 'myapp', :git => "git@github.com:myaddress/myapp.git", :branch => "mybranch"
Run Code Online (Sandbox Code Playgroud)
但我遇到格式错误.你知道如何格式化吗?
我正在使用一个宝石,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推送到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)