require "rake/testtask" REDIS_DIR = File.expand_path(File.join("..", "test"), __FILE__) REDIS_CNF = File.join(REDIS_DIR, "test.conf") REDIS_PID = File.join(REDIS_DIR, "db", "redis.pid") task :default => :run desc "Run tests and manage server start/stop" task :run => [:start, :test, :stop] desc "Start the Redis server" task :start do unless File.exists?(REDIS_PID) system "redis-server #{REDIS_CNF}" end end desc "Stop the Redis server" task :stop do if File.exists?(REDIS_PID) system "kill #{File.read(REDIS_PID)}" File.delete(REDIS_PID) end end task :test do require File.expand_path("./test/helper", File.dirname(__FILE__)) Cutest.run(Dir["test/*.rb"]) end desc "Generate documentation" task :doc => [:yard, :rocco] desc "Generated YARD documentation" task :yard do require "yard" opts = [] opts.push("--protected") opts.push("--no-private") opts.push("--private") opts.push("--title", "Ohm — Object-hash mapping library for Redis") YARD::CLI::Yardoc.run(*opts) Dir["doc/**/*.html"].each do |file| contents = File.read(file) contents.sub! %r{}, <<-EOS EOS File.open(file, "w") { |f| f.write(contents) } end end desc "Generate ROCCO documentation" task :rocco do `mkdir doc/examples` unless Dir.exists?("doc/examples") `rocco examples/*.*` `mv examples/*.html doc/examples` end desc "Deploy documentation" task :deploy do system "rsync --del -avz doc/* ohm.keyvalue.org:deploys/ohm.keyvalue.org/" end namespace :examples do desc "Run all the examples" task :run do begin require "cutest" rescue LoadError raise "!! Missing gem `cutest`. Try `gem install cutest`." end Cutest.run(Dir["examples/*.rb"]) end end task :paste_lua_inline do def wrap(const, data) ret = "#{const} = (<<-EOT).gsub(/^ {4}/, "")\n" ret << data.gsub(/^/, " ") ret << " EOT\n" end save = File.read("./lua/save.lua") del = File.read("./lua/delete.lua") # save = "foo" # del = "bar" ohm = File.read("./lib/ohm.rb", :encoding => "utf-8") ohm.gsub!(/SAVE =(.*?)$(.*?)EOT/m, wrap("SAVE", save)) ohm.gsub!(/DELETE =(.*?)$(.*?)EOT/m, wrap("DELETE", del)) puts ohm end