Ruby 编程/RubyGems
Rubygems 是 ruby 库的打包和“下载”系统。使用它通常很简单,例如
$ gem install xxx
其中 xxx 是您想要安装的 gem 名称。
有关 rubygems 的更多信息,可以在这里获得。
Gem::Specification.new do |s| s.post_install_message = "Enjoy my gem!" end
或“另一个示例”:http://github.com/tablatom/rubydoctest/blob/master/rubydoctest.gemspec
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
以下是一个示例:创建文件 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
另外,将“@gemspec.extensions = 'ext/mkrf_conf.rb'@”添加到您的 gemspec 中。
参见上文。
以下是一个来自 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}"
默认情况下,如果您列出
gemspec.extensions = 'ext/extconf.rb'
它将期望已创建了一个 Makefile,并在安装时对其运行 Make。您也可以列出“@gemspec.extensions = 'ext/mkrf_conf.rb'@”,它将运行它,期望已创建了 Rakefile,并在其上运行 rake。
Rubygems 现在支持插件,用于添加新的 gem xxx 命令,或在安装和卸载 gem 时执行。
以下是插件列表
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