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