couchbase 1.1.0-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +14 -0
- data/.travis.yml +11 -0
- data/.yardopts +5 -0
- data/Gemfile +4 -0
- data/HISTORY.markdown +75 -0
- data/LICENSE +201 -0
- data/README.markdown +370 -0
- data/Rakefile +22 -0
- data/couchbase.gemspec +47 -0
- data/ext/couchbase_ext/couchbase_ext.c +3464 -0
- data/ext/couchbase_ext/extconf.rb +113 -0
- data/lib/couchbase.rb +81 -0
- data/lib/couchbase/bucket.rb +72 -0
- data/lib/couchbase/version.rb +21 -0
- data/tasks/benchmark.rake +6 -0
- data/tasks/compile.rake +124 -0
- data/tasks/doc.rake +27 -0
- data/tasks/test.rake +94 -0
- data/tasks/util.rake +21 -0
- data/test/profile/.gitignore +1 -0
- data/test/profile/Gemfile +6 -0
- data/test/profile/benchmark.rb +195 -0
- data/test/setup.rb +167 -0
- data/test/test_arithmetic.rb +109 -0
- data/test/test_async.rb +235 -0
- data/test/test_bucket.rb +227 -0
- data/test/test_cas.rb +59 -0
- data/test/test_couchbase.rb +28 -0
- data/test/test_delete.rb +63 -0
- data/test/test_errors.rb +82 -0
- data/test/test_flush.rb +49 -0
- data/test/test_format.rb +98 -0
- data/test/test_get.rb +311 -0
- data/test/test_stats.rb +57 -0
- data/test/test_store.rb +186 -0
- data/test/test_touch.rb +69 -0
- data/test/test_version.rb +52 -0
- metadata +197 -0
@@ -0,0 +1,113 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
# Author:: Couchbase <info@couchbase.com>
|
3
|
+
# Copyright:: 2011, 2012 Couchbase, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
ENV['RC_ARCHS'] = '' if RUBY_PLATFORM =~ /darwin/
|
20
|
+
|
21
|
+
require 'mkmf'
|
22
|
+
|
23
|
+
def define(macro, value = nil)
|
24
|
+
$defs.push("-D #{[macro.upcase, value].compact.join('=')}")
|
25
|
+
end
|
26
|
+
|
27
|
+
$CFLAGS << " #{ENV["CFLAGS"]}"
|
28
|
+
$LDFLAGS << " #{ENV["LDFLAGS"]}"
|
29
|
+
$LIBS << " #{ENV["LIBS"]}"
|
30
|
+
|
31
|
+
$CFLAGS << ' -std=c99 -Wall -Wextra '
|
32
|
+
if ENV['DEBUG']
|
33
|
+
$CFLAGS << ' -O0 -ggdb3 -pedantic '
|
34
|
+
end
|
35
|
+
|
36
|
+
if RbConfig::CONFIG['target_os'] =~ /mingw32/
|
37
|
+
dir_config("libcouchbase")
|
38
|
+
else
|
39
|
+
LIBDIR = RbConfig::CONFIG['libdir']
|
40
|
+
INCLUDEDIR = RbConfig::CONFIG['includedir']
|
41
|
+
|
42
|
+
HEADER_DIRS = [
|
43
|
+
# First search /opt/local for macports
|
44
|
+
'/opt/local/include',
|
45
|
+
# Then search /usr/local for people that installed from source
|
46
|
+
'/usr/local/include',
|
47
|
+
# Check the ruby install locations
|
48
|
+
INCLUDEDIR,
|
49
|
+
# Finally fall back to /usr
|
50
|
+
'/usr/include'
|
51
|
+
]
|
52
|
+
|
53
|
+
LIB_DIRS = [
|
54
|
+
# First search /opt/local for macports
|
55
|
+
'/opt/local/lib',
|
56
|
+
# Then search /usr/local for people that installed from source
|
57
|
+
'/usr/local/lib',
|
58
|
+
# Check the ruby install locations
|
59
|
+
LIBDIR,
|
60
|
+
# Finally fall back to /usr
|
61
|
+
'/usr/lib'
|
62
|
+
]
|
63
|
+
|
64
|
+
# For people using homebrew
|
65
|
+
brew_prefix = `brew --prefix libevent 2> /dev/null`.chomp
|
66
|
+
unless brew_prefix.empty?
|
67
|
+
LIB_DIRS.unshift File.join(brew_prefix, 'lib')
|
68
|
+
HEADER_DIRS.unshift File.join(brew_prefix, 'include')
|
69
|
+
end
|
70
|
+
|
71
|
+
HEADER_DIRS.delete_if{|d| !File.exists?(d)}
|
72
|
+
LIB_DIRS.delete_if{|d| !File.exists?(d)}
|
73
|
+
|
74
|
+
# it will find the libcouchbase likely. you can specify its path otherwise
|
75
|
+
#
|
76
|
+
# ruby extconf.rb [--with-libcouchbase-include=<dir>] [--with-libcouchbase-lib=<dir>]
|
77
|
+
#
|
78
|
+
# or
|
79
|
+
#
|
80
|
+
# ruby extconf.rb [--with-libcouchbase-dir=<dir>]
|
81
|
+
#
|
82
|
+
dir_config("libcouchbase", HEADER_DIRS, LIB_DIRS)
|
83
|
+
end
|
84
|
+
|
85
|
+
if COMMON_HEADERS !~ /"ruby\.h"/
|
86
|
+
COMMON_HEADERS << %(\n#include "ruby.h"\n)
|
87
|
+
end
|
88
|
+
|
89
|
+
if try_compile(<<-SRC)
|
90
|
+
#include <stdarg.h>
|
91
|
+
int foo(int x, ...) {
|
92
|
+
va_list va;
|
93
|
+
va_start(va, x);
|
94
|
+
va_arg(va, int);
|
95
|
+
va_arg(va, char *);
|
96
|
+
va_arg(va, double);
|
97
|
+
return 0;
|
98
|
+
}
|
99
|
+
int main() {
|
100
|
+
return foo(10, "", 3.14);
|
101
|
+
return 0;
|
102
|
+
}
|
103
|
+
SRC
|
104
|
+
define("HAVE_STDARG_PROTOTYPES")
|
105
|
+
end
|
106
|
+
|
107
|
+
|
108
|
+
if RbConfig::CONFIG['target_os'] =~ /mingw32/
|
109
|
+
have_library("vbucket", "vbucket_config_create", "libvbucket/vbucket.h") or abort "You should install libvbucket >= 1.8.0.2"
|
110
|
+
end
|
111
|
+
have_library("couchbase", "libcouchbase_server_versions", "libcouchbase/couchbase.h") or abort "You should install libcouchbase >= 1.0.2"
|
112
|
+
create_header("couchbase_config.h")
|
113
|
+
create_makefile("couchbase_ext")
|
data/lib/couchbase.rb
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
# Author:: Couchbase <info@couchbase.com>
|
2
|
+
# Copyright:: 2011, 2012 Couchbase, Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
require 'couchbase/version'
|
19
|
+
require 'yajl/json_gem'
|
20
|
+
require 'uri'
|
21
|
+
require 'couchbase_ext'
|
22
|
+
require 'couchbase/bucket'
|
23
|
+
|
24
|
+
# Couchbase ruby client
|
25
|
+
module Couchbase
|
26
|
+
|
27
|
+
class << self
|
28
|
+
# The method +connect+ initializes new Bucket instance with all arguments passed.
|
29
|
+
#
|
30
|
+
# @example Use default values for all options
|
31
|
+
# Couchbase.connect
|
32
|
+
#
|
33
|
+
# @example Establish connection with couchbase default pool and default bucket
|
34
|
+
# Couchbase.connect("http://localhost:8091/pools/default")
|
35
|
+
#
|
36
|
+
# @example Select custom bucket
|
37
|
+
# Couchbase.connect("http://localhost:8091/pools/default", :bucket => 'blog')
|
38
|
+
#
|
39
|
+
# @example Specify bucket credentials
|
40
|
+
# Couchbase.connect("http://localhost:8091/pools/default", :bucket => 'blog', :username => 'bucket', :password => 'secret')
|
41
|
+
#
|
42
|
+
# @return [Bucket] connection instance
|
43
|
+
def connect(*options)
|
44
|
+
Bucket.new(*options)
|
45
|
+
end
|
46
|
+
alias :new :connect
|
47
|
+
|
48
|
+
# Default connection options
|
49
|
+
#
|
50
|
+
# @example Using {Couchbase#connection_options} to change the bucket
|
51
|
+
# Couchbase.connection_options = {:bucket => 'blog'}
|
52
|
+
# Couchbase.bucket.name #=> "blog"
|
53
|
+
#
|
54
|
+
# @return [Hash, String]
|
55
|
+
attr_accessor :connection_options
|
56
|
+
|
57
|
+
# @private the thread local storage
|
58
|
+
def thread_storage
|
59
|
+
Thread.current[:couchbase] ||= {}
|
60
|
+
end
|
61
|
+
|
62
|
+
# The connection instance for current thread
|
63
|
+
#
|
64
|
+
# @example
|
65
|
+
# Couchbase.bucket.set("foo", "bar")
|
66
|
+
#
|
67
|
+
# @return [Bucket]
|
68
|
+
def bucket
|
69
|
+
thread_storage[:bucket] ||= connect(*connection_options)
|
70
|
+
end
|
71
|
+
|
72
|
+
# Set a connection instance for current thread
|
73
|
+
#
|
74
|
+
# @return [Bucket]
|
75
|
+
def bucket=(connection)
|
76
|
+
thread_storage[:bucket] = connection
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# Author:: Couchbase <info@couchbase.com>
|
2
|
+
# Copyright:: 2011, 2012 Couchbase, Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
module Couchbase
|
19
|
+
|
20
|
+
class Bucket
|
21
|
+
|
22
|
+
# Reads a key's value from the server and yields it to a block. Replaces
|
23
|
+
# the key's value with the result of the block as long as the key hasn't
|
24
|
+
# been updated in the meantime, otherwise raises
|
25
|
+
# {Couchbase::Error::KeyExists}. CAS stands for "compare and swap", and
|
26
|
+
# avoids the need for manual key mutexing. Read more info here:
|
27
|
+
#
|
28
|
+
# http://docs.couchbase.org/memcached-api/memcached-api-protocol-text_cas.html
|
29
|
+
#
|
30
|
+
# @param [String, Symbol] key
|
31
|
+
#
|
32
|
+
# @param [Hash] options the options for operation
|
33
|
+
# @option options [String] :ttl (self.default_ttl) the time to live of this key
|
34
|
+
# @option options [Symbol] :format (self.default_format) format of the value
|
35
|
+
# @option options [Fixnum] :flags (self.default_flags) flags for this key
|
36
|
+
#
|
37
|
+
# @yieldparam [Object, Result] value old value in synchronous mode and
|
38
|
+
# +Result+ object in asynchronous mode.
|
39
|
+
# @yieldreturn [Object] new value.
|
40
|
+
#
|
41
|
+
# @raise [Couchbase::Error::KeyExists] if the key was updated before the the
|
42
|
+
# code in block has been completed (the CAS value has been changed).
|
43
|
+
#
|
44
|
+
# @example Implement append to JSON encoded value
|
45
|
+
#
|
46
|
+
# c.default_format = :document
|
47
|
+
# c.set("foo", {"bar" => 1})
|
48
|
+
# c.cas("foo") do |val|
|
49
|
+
# val["baz"] = 2
|
50
|
+
# val
|
51
|
+
# end
|
52
|
+
# c.get("foo") #=> {"bar" => 1, "baz" => 2}
|
53
|
+
#
|
54
|
+
# @return [Fixnum] the CAS of new value
|
55
|
+
def cas(key, options = {})
|
56
|
+
options = options.merge(:extended => true)
|
57
|
+
if async?
|
58
|
+
get(key, options) do |ret|
|
59
|
+
val = yield(ret) # get new value from caller
|
60
|
+
set(ret.key, val, :cas => ret.cas)
|
61
|
+
end
|
62
|
+
else
|
63
|
+
val, flags, ver = get(key, options)
|
64
|
+
val = yield(val) # get new value from caller
|
65
|
+
set(key, val, :cas => ver)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
alias :compare_and_swap :cas
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# Author:: Couchbase <info@couchbase.com>
|
2
|
+
# Copyright:: 2011, 2012 Couchbase, Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
# Couchbase ruby client
|
19
|
+
module Couchbase
|
20
|
+
VERSION = "1.1.0"
|
21
|
+
end
|
@@ -0,0 +1,6 @@
|
|
1
|
+
desc 'Run benchmarks and compare them to memcached and dalli gems'
|
2
|
+
task :benchmark => [:clean, :compile] do
|
3
|
+
cd File.expand_path(File.join(__FILE__, '..', '..', 'test', 'profile')) do
|
4
|
+
sh "bundle install && bundle exec ruby benchmark.rb | tee benchmark-#{RUBY_VERSION}p#{RUBY_PATCHLEVEL}.log"
|
5
|
+
end
|
6
|
+
end
|
data/tasks/compile.rake
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
# Author:: Couchbase <info@couchbase.com>
|
2
|
+
# Copyright:: 2011, 2012 Couchbase, Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
gem 'rake-compiler', '>= 0.7.5'
|
19
|
+
require "rake/extensiontask"
|
20
|
+
|
21
|
+
def gemspec
|
22
|
+
@clean_gemspec ||= eval(File.read(File.expand_path('../../couchbase.gemspec', __FILE__)))
|
23
|
+
end
|
24
|
+
|
25
|
+
# Setup compile tasks. Configuration can be passed via ENV.
|
26
|
+
# Example:
|
27
|
+
# rake compile with_libcouchbase_include=/opt/couchbase/include
|
28
|
+
# with_libcouchbase_lib=/opt/couchbase/lib
|
29
|
+
#
|
30
|
+
# or
|
31
|
+
#
|
32
|
+
# rake compile with_libcouchbase_dir=/opt/couchbase
|
33
|
+
#
|
34
|
+
Rake::ExtensionTask.new("couchbase_ext", gemspec) do |ext|
|
35
|
+
ext.cross_compile = true
|
36
|
+
ext.cross_platform = [ENV['HOST'] || "i386-mingw32"]
|
37
|
+
if ENV['RUBY_CC_VERSION']
|
38
|
+
ext.lib_dir = "lib/couchbase"
|
39
|
+
end
|
40
|
+
ext.cross_compiling do |spec|
|
41
|
+
spec.files.delete("lib/couchbase/couchbase_ext.so")
|
42
|
+
spec.files.push("lib/couchbase_ext.rb", Dir["lib/couchbase/1.{8,9}/couchbase_ext.so"])
|
43
|
+
end
|
44
|
+
|
45
|
+
CLEAN.include "#{ext.lib_dir}/*.#{RbConfig::CONFIG['DLEXT']}"
|
46
|
+
|
47
|
+
ENV.each do |key, val|
|
48
|
+
next unless key =~ /\Awith_(\w+)\z/i
|
49
|
+
opt = $1.downcase.tr('_', '-')
|
50
|
+
if File.directory?(path = File.expand_path(val))
|
51
|
+
ext.config_options << "--with-#{opt}=#{path}"
|
52
|
+
else
|
53
|
+
warn "No such directory: #{opt}: #{path}"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
require 'rubygems/package_task'
|
59
|
+
Gem::PackageTask.new(gemspec) do |pkg|
|
60
|
+
pkg.need_zip = true
|
61
|
+
pkg.need_tar = true
|
62
|
+
end
|
63
|
+
|
64
|
+
require 'mini_portile'
|
65
|
+
require 'rake/extensioncompiler'
|
66
|
+
|
67
|
+
class MiniPortile
|
68
|
+
alias :initialize_with_default_host :initialize
|
69
|
+
def initialize(name, version)
|
70
|
+
initialize_with_default_host(name, version)
|
71
|
+
@host = ENV['HOST'] || Rake::ExtensionCompiler.mingw_host
|
72
|
+
end
|
73
|
+
|
74
|
+
alias :cook_without_checkpoint :cook
|
75
|
+
def cook
|
76
|
+
checkpoint = "ports/.#{name}-#{version}-#{host}.installed"
|
77
|
+
unless File.exist?(checkpoint)
|
78
|
+
cook_without_checkpoint
|
79
|
+
FileUtils.touch(checkpoint)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
namespace :ports do
|
85
|
+
directory "ports"
|
86
|
+
|
87
|
+
task :libvbucket => ["ports"] do
|
88
|
+
recipe = MiniPortile.new "libvbucket", "1.8.0.3"
|
89
|
+
recipe.files << "http://packages.couchbase.com/clients/c/#{recipe.name}-#{recipe.version}.tar.gz"
|
90
|
+
recipe.configure_options.push("--disable-debug",
|
91
|
+
"--without-docs",
|
92
|
+
"--disable-dependency-tracking")
|
93
|
+
recipe.cook
|
94
|
+
recipe.activate
|
95
|
+
end
|
96
|
+
|
97
|
+
task :libcouchbase => [:libvbucket] do
|
98
|
+
recipe = MiniPortile.new "libcouchbase", "1.0.2"
|
99
|
+
recipe.files << "http://packages.couchbase.com/clients/c/#{recipe.name}-#{recipe.version}.tar.gz"
|
100
|
+
recipe.configure_options.push("--disable-debug",
|
101
|
+
"--disable-dependency-tracking",
|
102
|
+
"--disable-couchbasemock",
|
103
|
+
"--disable-tools")
|
104
|
+
recipe.cook
|
105
|
+
recipe.activate
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
file "lib/couchbase_ext.rb" do
|
110
|
+
File.open("lib/couchbase_ext.rb", 'wb') do |f|
|
111
|
+
f.write <<-RUBY
|
112
|
+
require "couchbase/\#{RUBY_VERSION.sub(/\\.\\d+$/, '')}/couchbase_ext"
|
113
|
+
RUBY
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
task :cross => ["lib/couchbase_ext.rb", "ports:libcouchbase"]
|
118
|
+
|
119
|
+
desc "Package gem for windows"
|
120
|
+
task "package:windows" => :package do
|
121
|
+
sh("env RUBY_CC_VERSION=1.8.7 rvm 1.8.7 do bundle exec rake cross compile")
|
122
|
+
sh("env RUBY_CC_VERSION=1.9.2 rvm 1.9.2 do bundle exec rake cross compile")
|
123
|
+
sh("env RUBY_CC_VERSION=1.8.7:1.9.2 rvm 1.9.2 do bundle exec rake cross native gem")
|
124
|
+
end
|
data/tasks/doc.rake
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# Author:: Couchbase <info@couchbase.com>
|
2
|
+
# Copyright:: 2011, 2012 Couchbase, Inc.
|
3
|
+
# License:: Apache License, Version 2.0
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
#
|
17
|
+
|
18
|
+
require 'rake/clean'
|
19
|
+
require 'yard'
|
20
|
+
require 'yard/rake/yardoc_task'
|
21
|
+
|
22
|
+
YARD::Rake::YardocTask.new do |t|
|
23
|
+
t.options = %w(--protected --no-private)
|
24
|
+
t.files.push('-', 'README.markdown', 'HISTORY.markdown')
|
25
|
+
end
|
26
|
+
|
27
|
+
#CLOBBER << 'test/CouchbaseMock.jar'
|