12

我正在创造我期望成为红宝石的东西。任何人都有关于将简单库或插件转换为 gem 的教程的良好链接?另外,特别是,Ruby 使用什么过程来允许 require 查找 gem?这似乎不仅仅是将文件放在 gem 路径中(或者我的配置搞砸了?)。

谢谢

4

3 回答 3

26

手动执行此操作实际上并不难。假设您有一个whatever.rb想要作为 gem 分发的库。

  1. 建立一个目录lib并复制一份whatever.rbin lib/whatever.rb
  2. 创建一个文件whatever.gemspec,并在其中放入以下内容,并填写适当的值:
    
     Gem::Specification.new do |spec|
       spec.name = 'the-name-of-your-gem'
       spec.version ='0.0.1'
    # this is important - it specifies which files to include in the gem. spec.files = ["lib/whatever.rb"]
    # optional, but useful to your users spec.summary = "A more longwinded description of your gem" spec.author = 'Your Name' spec.email = 'you@yourdomain.com' spec.homepage = 'http://www.yourpage.com'
    # you did document with RDoc, right? spec.has_rdoc = true
    # if you have a ruby forge project spec.rubyforge_project = 'your-project-name-on-rubyforge'
    # if you have any dependencies on other gems, list them thusly spec.add_dependency('hpricot') spec.add_dependency('log4r', '>= 1.0.5') end
  3. 现在,要构建 gem,请使用以下gem build命令:
    % gem build 不管什么.gemspec
    成功构建 RubyGem
    名称:您的宝石的名称
    版本:0.0.1
    文件:the-name-of-your-gem-0.0.1.gem
    %
    
  4. gem install the-name-of-your-gem-0.0.1.gem 您可以通过使用在脚本中使用您的库来进行本地测试,只需在顶部执行以下操作:
    
    require 'rubygems' # puts gem libraries in the require path
    require 'whatever' # loads your library
    

有关gemspec文件中各种设置的更多信息,请查看GemSpec 参考

就个人而言,我也经常使用 ruby​​gems 来打包可执行脚本,并且发现它非常方便。

于 2009-03-26T13:01:15.837 回答
2

这里有一个来自 Dr Nic 的旧的,它使用 newgem。这现在可能有点过时了。

最近,我们得到了 gemify,它似乎建立在上述之上。这是一个关于那个的帖子

就路径而言,一旦您执行gem install <some-useful-stuff>并且您的要求代码已经执行require 'rubygems'或者您设置了 RUBYOPT=-rubygems (仅适用于 Windows 吗?我不确定),那么后续的执行require也将在 gems 目录中搜索合适的图书馆。

还有更明确​​(但已弃用)的require_gem命令,现在只是 plain gem,它允许您指定版本号。

于 2009-03-26T11:54:03.627 回答
2

要制作红宝石宝石,您可能需要查看newgemJeweler

于 2009-03-26T11:56:04.573 回答