跳转到内容

Ruby 编程/RubyGems

来自维基教科书,开放的书籍,开放的世界

Rubygems 是 ruby 库的打包和“下载”系统。使用它通常很简单,例如

$ gem install xxx

其中 xxx 是您想要安装的 gem 名称。

有关 rubygems 的更多信息,可以在这里获得。

如何在安装 gem 后向最终用户显示文本。

[编辑 | 编辑源代码]
Gem::Specification.new do |s|
 s.post_install_message  = "Enjoy my gem!"
end

或“另一个示例”:http://github.com/tablatom/rubydoctest/blob/master/rubydoctest.gemspec

如何设置 gem 的 rdocs 主页

[编辑 | 编辑源代码]
Gem::Specification.new do |s|
  ...
  s.rdoc_options = ["--title", "EventMachine", "--main", "README", "--line-numbers"]
  s.extra_rdoc_files = ["README", "RELEASE_NOTES", "COPYING", "GNU", "LEGAL", "TODO"]
end

或“另一个示例”:http://github.com/eventmachine/evma_httpserver/blob/master/eventmachine_httpserver.gemspec

如何根据安装者的 ruby 版本安装不同版本的 gem

[编辑 | 编辑源代码]

以下是一个示例:创建文件 ext/mkrf_conf.rb

  require 'rubygems'
  require 'rubygems/command.rb'
  require 'rubygems/dependency_installer.rb' 
  begin
    Gem::Command.build_args = ARGV
    rescue NoMethodError
  end 
  inst = Gem::DependencyInstaller.new
  begin
    if RUBY_VERSION < "1.9"
      inst.install "ruby-debug-base", "~> 0.10.3"
    else
      inst.install "ruby-debug-base19", "~> 0.11.24"
    end
    rescue
      exit(1)
  end 

  f = File.open(File.join(File.dirname(__FILE__), "Rakefile"), "w")   # create dummy rakefile to indicate success
  f.write("task :default\n")
  f.close

http://groups.google.com/group/ruby-talk-google/browse_thread/thread/6a03451af53fb853/5d402de5b0da1adf?lnk=raot&pli=1 有描述

另外,将“@gemspec.extensions = 'ext/mkrf_conf.rb'@”添加到您的 gemspec 中。

如何以编程方式安装 gem

[编辑 | 编辑源代码]

参见上文。

如何在 extconf.rb 中运行 configure

[编辑 | 编辑源代码]

以下是一个来自 rice 的 extconf.rb 的示例

require 'rbconfig'
require 'rubygems'
require 'ruby/lib/version.rb'

gem_name = "rice-#{Rice::VERSION}"
prefix_dir = File.join(Gem.default_dir, "gems", gem_name, "ruby", "lib")
with_ruby = File.join(Config::CONFIG["bindir"], Config::CONFIG["RUBY_INSTALL_NAME"])

other_opts = ""
env = ""

if RUBY_PLATFORM =~ /darwin10/
  other_opts = "--disable-dependency-tracking"
  env = "ARCHFLAGS='-arch x86_64'"
end

system "#{env} ./configure --with-ruby=#{with_ruby} --prefix=#{prefix_dir} #{other_opts}"

如何使用 Rakefile 代替 Makefile

[编辑 | 编辑源代码]

默认情况下,如果您列出

gemspec.extensions = 'ext/extconf.rb'

它将期望已创建了一个 Makefile,并在安装时对其运行 Make。您也可以列出“@gemspec.extensions = 'ext/mkrf_conf.rb'@”,它将运行它,期望已创建了 Rakefile,并在其上运行 rake。

Rubygems 现在支持插件,用于添加新的 gem xxx 命令,或在安装和卸载 gem 时执行。

已知的 rubygems 插件

[编辑 | 编辑源代码]

以下是插件列表

gemcutter gem http://github.com/qrush/gemcutter/blob/master/gem/lib/gemcutter.rb 允许您在 gem 准备就绪后将其“推送到” gemcutter

graph gem http://blog.zenspider.com/2009/04/rubygems-now-has-plugins.html 创建本地依赖项的 graphviz 图

yard gem 有一种方法可以在安装 gem 后创建 yard 文档(而不是默认的 rdoc)。

gem_file_conflict_checker gem:当您安装两个 lib 文件发生冲突的 gem 时,会向您发出警告(这会导致严重问题,并且对于安装自己版本的 gem 的 gem 开发人员等来说很常见)

isit19 http://blog.segment7.net/articles/2009/08/19/rubygems-isit19-1-0 gem

华夏公益教科书