标签: gemspecs

安装我的宝石时出现奇怪的错误

我刚刚发布了ginjo-rfm gem的v2.0.0.当我在雪豹机器(rubygems版本1.3.5)上安装此gem时,我收到以下错误:

admin$ sudo gem install ginjo-rfm --no-rdoc --no-ri
ERROR:  Error installing ginjo-rfm:
    multi_json requires RubyGems version >= 1.3.6
Run Code Online (Sandbox Code Playgroud)

但是,gem安装并成功运行.

我只有一个运行时依赖项:ActiveSupport> = 2.3.5,这已经安装在我的所有机器上.在我的宝石中没有任何地方我甚至提到multi_json.

更奇怪的是,当我尝试在Ubuntu 8.10(rubygems版本1.3.5)上安装ginjo-rfm时,rubygems会抛出缓冲区溢出错误(见下文).

我的宝石出了什么问题?这是一个相当简单的宝石和gemspec.我已经梳理过,无法找到任何可能导致这类错误的问题.

如果有人愿意看看原始宝石:

mkdir ginjo; cd ginjo
gem fetch ginjo-rfm
tar -xf ginjo-rfm-2.0.0.gem
Run Code Online (Sandbox Code Playgroud)

或者,在"元数据"文件中查看嵌入为yaml的gemspec(参见下文).

谢谢!

缓冲区溢出错误

~$ sudo gem install ginjo-rfm --no-rdoc --no-ri
*** buffer overflow detected ***: /usr/local/bin/ruby terminated
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x48)[0xf76bf558]
/lib/tls/i686/cmov/libc.so.6[0xf76bd680]
/usr/local/lib/ruby/1.8/i686-linux/syck.so(rb_syck_mktime+0x545)[0xf752cdb5]
/usr/local/lib/ruby/1.8/i686-linux/syck.so(yaml_org_handler+0xabc)[0xf752d8dc]
/usr/local/lib/ruby/1.8/i686-linux/syck.so(syck_defaultresolver_node_import+0x3f)[0xf752d9af]
/usr/local/bin/ruby[0x8060c74]
/usr/local/bin/ruby[0x8060e14]
/usr/local/bin/ruby[0x8061a5a]
/usr/local/bin/ruby(rb_funcall+0x20)[0x8061b90]
/usr/local/lib/ruby/1.8/i686-linux/syck.so(rb_syck_load_handler+0x69)[0xf752b269]
/usr/local/lib/ruby/1.8/i686-linux/syck.so(syck_hdlr_add_node+0x4d)[0xf7525edd]
/usr/local/lib/ruby/1.8/i686-linux/syck.so(syckparse+0xc11)[0xf7526cb1]
/usr/local/lib/ruby/1.8/i686-linux/syck.so(syck_parse+0x32)[0xf7522e12]
/usr/local/lib/ruby/1.8/i686-linux/syck.so(syck_parser_load+0x112)[0xf752dd92]
/usr/local/bin/ruby[0x8056ecd]
/usr/local/bin/ruby[0x8060c74]
/usr/local/bin/ruby[0x8060e14]
/usr/local/bin/ruby[0x805ba84]
/usr/local/bin/ruby[0x805cd31]
/usr/local/bin/ruby[0x8060b79]
/usr/local/bin/ruby[0x8060e14]
/usr/local/bin/ruby[0x805ba84]
/usr/local/bin/ruby[0x805cd31] …
Run Code Online (Sandbox Code Playgroud)

ruby rubygems gemspecs

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

在 gemspec 中添加多个 gem 依赖项

你们如何向 gemspec 添加多个开发/运行时依赖项?

这是我这样做的方式:

spec.add_development_dependency 'example1', '~> 1.1', '>= 1.1.4'
spec.add_development_dependency 'example2', '~> 1.1', '>= 1.1.4'
Run Code Online (Sandbox Code Playgroud)

但是我想知道是否有其他方法可以做到这一点?

提前致谢!

ruby gem rubygems gemspecs

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

Ruby_Installation_Error_Watir

我遇到了以下错误:

#ERROR
C:\Users\Farooq>D:

D:\>irb
irb(main):001:0> require 'rubygems'

=> false

irb(main):002:0> require 'watir'

LoadError: cannot load such file -- watir/loader
        from D:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from D:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
        from D:/Ruby193/lib/ruby/gems/1.9.1/gems/commonwatir-4.0.0/lib/watir.rb:1:in `<top (required)>'
        from D:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `require'
        from D:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in require'
        from D:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
        from (irb):2
        from D:/Ruby193/bin/irb:12:in `<main>'
irb(main):003:0>
Run Code Online (Sandbox Code Playgroud)

我已经安装了gem watir,我的系统配置如下:

  • 操作系统:Windows7
  • IE:10

ruby installation rubygems watir gemspecs

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

移植文件后,bundle install导致验证错误

在我的gem开发目录中,我将文件lib/project/module.rb移动lib/project/helpers/module.rb然后做了

捆绑安装

这给了我一个无效的gemspec错误

/ path/project中的项目没有有效的gemspec.这可以防止bundler安装bin或native扩展,但这可能不会影响其功能.来自Rubygems的验证消息是:

["lib/project/module.rb"]不是文件

为什么我收到此错误?

ruby bundle rubygems gemspecs

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

How to specify source in .gemspec file?

I'm building a gem that uses rails-assets-growl gem. This gem can be added to my Gemfile using a different source than 'https://rubygems.org' like this:

source 'https://rails-assets.org' do
  gem 'rails-assets-growl'
end
Run Code Online (Sandbox Code Playgroud)

在开发模式下可以正常工作。但是,当我在rubygems.org咆哮中发布我的gem时,它并不包含在依赖关系中。

宝石依赖

我认为,这是因为我需要https://rails-assets.org在gemspec中指定源而不是Gemfile。但是,我不确定。

因此,问题是:

如何在gemspec文件中指定gem的来源?

ruby rubygems gemspecs gemfile

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

为什么“bundler gem”将“rake”和“rspec”添加到 Gemfile 而不是 .gemspec 文件作为开发依赖项?

我对 Ruby 世界不太熟悉。Java 构建工具通常使用jUnit 之类的测试范围。

我用命令初始化了一个新项目:bundle gem new_gem_from_bundler其内容Gemfile

source "https://rubygems.org"

# Specify your gem's dependencies in new_gem_from_bundler.gemspec
gemspec

gem "rake", "~> 12.0"
gem "rspec", "~> 3.0"
Run Code Online (Sandbox Code Playgroud)

为什么不:

group :development do
  gem "rspec", "~> 3.9.0"
  gem "rake", "~> 3.0"
end
Run Code Online (Sandbox Code Playgroud)

另外,由于有一个.gemspec文件,我希望rake它的rspec定义如下:

spec.add_development_dependency 'rake', '~> 12.0'
spec.add_development_dependency 'rspec', '~> 3.0'
Run Code Online (Sandbox Code Playgroud)

为什么它们被声明为常规的“gem”依赖项?

ruby rubygems bundler gemspecs

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

谁能告诉我Ruby中Gemspec文件的用途是什么?

通过谷歌梳理后,我知道发生的事情我的项目gemspec文件,但我没有任何线索,为什么我们需要它,我想我正在寻找一个切实可行的定义。

(当前正在研究Zed Shaw的《艰苦学习Ruby》,这是研究问题之一)

ruby ruby-on-rails gemspecs

4
推荐指数
1
解决办法
1450
查看次数

如何在构建另一个gem时使用私有gem服务器托管gem

如果我已经构建了一个私有gem(例如在我的公司内部托管),那么我想在我正在构建的另一个gem(不是app!)中重用那个gem,我该怎么做?

我在哪里放置我的依赖项并告诉我的新gem如何找到旧的(已经构建的)私有托管的gem?

rubygems gemspecs

3
推荐指数
1
解决办法
682
查看次数

是否有宝石规格。name 必须等于 gem 常量名称吗?

tl;博士

我试图将更大的应用程序的一部分作为可安装的引擎。引擎将以不同的形式存在,每一种都包含在自己的宝石中。我无法让 gem 名称与引擎常量名称不同。

细节

提取的部分包含用于注册、身份验证和会话处理的逻辑。该应用程序被世界不同地区的客户使用,对使用该产品的最终客户有不同的要求和规定。这促使我们为每个监管区域的这些需求创建单独的模块。它们当前位于 lib 目录中,并且根据配置加载不同的实现。

引擎的目标是安装适当的引擎,路由文件将所有相关调用路由到引擎。

由于我们有几个这样的注册模块,而且还有更多,我们需要为这些变体维护几个 gem。我正在尝试使 gems 具有不同的名称(auth_A、auth_B 等),但包含的引擎具有相同的内容名称 Auth::Engine。

这样我们就可以在 Gemfile 中包含正确的 gem,其余的就可以正常工作,因为无论运行什么版本,它应该路由到的端点总是相同的。

问题

我遇到的问题是我无法让 gem 具有一个名称而引擎具有另一个名称...

如果我生成一个新的引擎名称 auth,则可以将其安装在主应用程序中。如果我然后将 gem 名称和包含文件夹更改为 auth_a 并更新主机应用程序 Gemfile 它停止工作,我可以很好地捆绑,但是当我尝试启动主机应用程序时,它在连接到安装引擎时失败,抱怨 Auth::引擎是一个未定义的常量。

我的,稍微编辑了一下,gemspec 看起来像这样:

$:.push File.expand_path("../lib", __FILE__)

# Maintain your gem's version:
require "auth/version"

# Describe your gem and declare its dependencies:
Gem::Specification.new do |s|
  s.name        = "auth_a"
  s.version     = Auth::VERSION
  s.authors     = ["Jonas Schubert Erlandsson"]
  s.email       = ["jonas.schubert.erlandsson@xxxxxx.com"]
  s.homepage    = "http://some.page.on/the/internet.html"
  s.summary     = "Authentication module for A"
  s.description = …
Run Code Online (Sandbox Code Playgroud)

gem rubygems ruby-on-rails gemspecs ruby-on-rails-3.2

3
推荐指数
1
解决办法
705
查看次数

什么是Ruby gemspec创建和依赖管理的最佳方法?

在过去的几个月里,Ruby依赖管理和创建宝石的状态出现了许多快速发展,我一直无法跟上所有事情.

  • 如果我正在写一个新的宝石,那么我用来创建我的最佳工具是什么gemspec?使用此工具比竞争对手有缺点吗?

  • 我已经在应用程序上使用了Bundler几次,对我而言,它是一个救星.是否适合与生产应用程序一起使用?是否有人应该注意的怪癖或特质?

您已经使用并且发现有用的资源的链接也将非常感激.

ruby gem gemspecs

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

如何在开发gem时使用'debugger'和'pry'?(红宝石)

我正在开发一个gem,我的Gemfile看起来像这样:

source :rubygems

gemspec

group :development, :test do
  gem "pry"
  gem "debugger"
  gem "rake"
end
Run Code Online (Sandbox Code Playgroud)

但是,我不希望人们必须安装prydebugger运行测试,但我也希望能够在我的测试中要求它们(因为我正在运行带有前缀的测试bundle exec,我无法在我的加载路径中获取它们如果他们不在Gemfile中).我该如何实现这一目标?

另外,何时将用于开发的宝石放在gemspec中,何时将它们放入Gemfile中?我真的不知道区别.

ruby testing gem bundler gemspecs

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