hbase-stargate 1.5.5 → 1.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.textile +4 -7
- data/Rakefile +0 -1
- data/hbase-stargate.gemspec +27 -0
- data/lib/stargate/client.rb +15 -20
- data/lib/stargate/model/row.rb +0 -8
- data/lib/stargate/model/scanner.rb +0 -3
- data/lib/stargate/model.rb +6 -6
- data/lib/stargate/operation/row_operation.rb +4 -4
- data/lib/stargate/operation/scanner_operation.rb +4 -4
- data/lib/stargate/operation/table_operation.rb +10 -12
- data/lib/stargate/request.rb +5 -5
- data/lib/stargate/response/basic_response.rb +9 -5
- data/lib/stargate/response/scanner_response.rb +9 -11
- data/lib/stargate/response.rb +5 -5
- data/lib/stargate/version.rb +1 -1
- data/lib/stargate.rb +9 -5
- data/spec/hbase-stargate/operation/meta_operation_spec.rb +6 -0
- data/spec/hbase-stargate/operation/row_operation_spec.rb +1 -0
- data/spec/hbase-stargate/operation/table_operation_spec.rb +20 -11
- data/spec/spec_helper.rb +3 -1
- metadata +18 -29
- data/spec/spec.opts +0 -4
data/README.textile
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
h1. hbase-stargate
|
2
2
|
|
3
|
-
A Ruby client for HBase (http://hadoop.apache.org/hbase) that works with the Stargate interface.
|
4
|
-
Stargate is the RESTful web service front end for HBase that can serve up a number of formats including XML, JSON, and protobufs.
|
3
|
+
A Ruby client for HBase (http://hadoop.apache.org/hbase) that works with the REST (previously known as Stargate) interface. The RESTful web service front end for HBase can serve up a number of formats including XML, JSON, and protobufs.
|
5
4
|
|
6
5
|
This project is based off the work of Dingding Ye <yedingding@gmail.com> at http://github.com/sishen/hbase-ruby
|
7
6
|
|
@@ -9,11 +8,11 @@ This project is based off the work of Dingding Ye <yedingding@gmail.com> at http
|
|
9
8
|
h2. Installation
|
10
9
|
|
11
10
|
<pre>
|
12
|
-
<code>$ gem install hbase-stargate
|
11
|
+
<code>$ gem install hbase-stargate</code>
|
13
12
|
</pre>
|
14
13
|
|
15
14
|
To work with this gem in your Rails application, add this to the environment.rb file:
|
16
|
-
<pre><code>config.gem 'hbase-stargate', :lib => "stargate"
|
15
|
+
<pre><code>config.gem 'hbase-stargate', :lib => "stargate"</code></pre>
|
17
16
|
|
18
17
|
To build the gem yourself:
|
19
18
|
<pre><code>$ rake build</code></pre>
|
@@ -24,12 +23,10 @@ h2. Getting Started
|
|
24
23
|
# Download and unpack the most recent release of HBase from http://hadoop.apache.org/hbase/releases.html#Download
|
25
24
|
# Edit <hbase-dir>/conf/hbase-env.sh and uncomment/modify the following line to correspond to your Java home path:
|
26
25
|
export JAVA_HOME=/usr/lib/jvm/java-6-sun
|
27
|
-
# Copy <hbase-dir>/contrib/stargate/hbase-<version>-stargate.jar into <hbase-dir>/lib
|
28
|
-
# Copy all the files in the <hbase-dir>/contrib/stargate/lib folder into <hbase-dir>/lib
|
29
26
|
# Start up HBase:
|
30
27
|
$ <hbase-dir>/bin/start-hbase.sh
|
31
28
|
# Start up Stargate (append "-p 1234" at the end if you want to change the port):
|
32
|
-
$ <hbase-dir>/bin/hbase
|
29
|
+
$ <hbase-dir>/bin/hbase rest start
|
33
30
|
|
34
31
|
|
35
32
|
h2. Usage
|
data/Rakefile
CHANGED
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib/', __FILE__)
|
3
|
+
$:.unshift lib unless $:.include?(lib)
|
4
|
+
|
5
|
+
require 'stargate/version'
|
6
|
+
|
7
|
+
Gem::Specification.new do |s|
|
8
|
+
s.name = "hbase-stargate"
|
9
|
+
s.version = Stargate::VERSION
|
10
|
+
s.authors = ["Hopper"]
|
11
|
+
s.summary = %q{Ruby client for HBase's Stargate web service}
|
12
|
+
s.description = %q{A Ruby client used to interact with HBase through its Stargate web service front-end}
|
13
|
+
s.email = %q{greg.lu@gmail.com}
|
14
|
+
s.homepage = %q{http://github.com/greglu/hbase-stargate}
|
15
|
+
|
16
|
+
s.platform = Gem::Platform::RUBY
|
17
|
+
s.required_rubygems_version = ">= 1.3.6"
|
18
|
+
|
19
|
+
s.files = Dir.glob("lib/**/*") + %w(LICENSE README.textile Rakefile hbase-stargate.gemspec)
|
20
|
+
s.test_files = Dir.glob("spec/**/*")
|
21
|
+
s.require_paths = ["lib"]
|
22
|
+
|
23
|
+
s.add_dependency(%q<yajl-ruby>, [">= 0"])
|
24
|
+
s.add_dependency(%q<patron>, [">= 0"])
|
25
|
+
|
26
|
+
s.add_development_dependency "rspec"
|
27
|
+
end
|
data/lib/stargate/client.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
require '
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
1
|
+
require 'patron'
|
2
|
+
require 'stargate/operation/meta_operation'
|
3
|
+
require 'stargate/operation/table_operation'
|
4
|
+
require 'stargate/operation/row_operation'
|
5
|
+
require 'stargate/operation/scanner_operation'
|
6
6
|
|
7
7
|
module Stargate
|
8
8
|
class Client
|
@@ -19,14 +19,12 @@ module Stargate
|
|
19
19
|
raise "invalid http url: #{url}"
|
20
20
|
end
|
21
21
|
|
22
|
+
@connection = Patron::Session.new
|
23
|
+
@connection.base_url = url
|
24
|
+
@connection.timeout = opts[:timeout] unless opts[:timeout].nil?
|
25
|
+
|
22
26
|
# Not actually opening the connection yet, just setting up the persistent connection.
|
23
|
-
|
24
|
-
proxy_address, proxy_port = opts[:proxy].split(':')
|
25
|
-
@connection = Net::HTTP.Proxy(proxy_address, proxy_port).new(@url.host, @url.port)
|
26
|
-
else
|
27
|
-
@connection = Net::HTTP.new(@url.host, @url.port)
|
28
|
-
end
|
29
|
-
@connection.read_timeout = opts[:timeout] if opts[:timeout]
|
27
|
+
@connection.proxy = opts[:proxy] unless opts[:proxy].nil?
|
30
28
|
end
|
31
29
|
|
32
30
|
def get(path, options = {})
|
@@ -66,22 +64,19 @@ module Stargate
|
|
66
64
|
def safe_response(&block)
|
67
65
|
begin
|
68
66
|
yield
|
69
|
-
rescue
|
70
|
-
raise ConnectionNotEstablishedError, "
|
71
|
-
rescue Timeout::Error => e
|
72
|
-
puts e.backtrace.join("\n")
|
73
|
-
raise ConnectionTimeoutError, "execution expired. Maybe query disabled tables"
|
67
|
+
rescue => e
|
68
|
+
raise ConnectionNotEstablishedError, "Connection problem with HBase rest server #{@url}:\n#{e.message}"
|
74
69
|
end
|
75
70
|
end
|
76
71
|
|
77
72
|
def safe_request(&block)
|
78
73
|
response = safe_response{ yield block }
|
79
74
|
|
80
|
-
case response
|
81
|
-
when
|
75
|
+
case response.status
|
76
|
+
when 200
|
82
77
|
response.body
|
83
78
|
else
|
84
|
-
response.
|
79
|
+
raise response.status_line
|
85
80
|
end
|
86
81
|
end
|
87
82
|
|
data/lib/stargate/model/row.rb
CHANGED
@@ -5,14 +5,6 @@ module Stargate
|
|
5
5
|
attr_accessor :name
|
6
6
|
attr_accessor :total_count
|
7
7
|
attr_accessor :columns
|
8
|
-
|
9
|
-
def timestamp
|
10
|
-
warn "[DEPRECATION] timestamp attribute will be removed from the Row model. "
|
11
|
-
end
|
12
|
-
|
13
|
-
def timestamp=
|
14
|
-
timestamp
|
15
|
-
end
|
16
8
|
end
|
17
9
|
end
|
18
10
|
end
|
data/lib/stargate/model.rb
CHANGED
@@ -11,9 +11,9 @@ module Stargate
|
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
require
|
15
|
-
require
|
16
|
-
require
|
17
|
-
require
|
18
|
-
require
|
19
|
-
require
|
14
|
+
require 'stargate/model/column'
|
15
|
+
require 'stargate/model/column_descriptor'
|
16
|
+
require 'stargate/model/region_descriptor'
|
17
|
+
require 'stargate/model/row'
|
18
|
+
require 'stargate/model/table_descriptor'
|
19
|
+
require 'stargate/model/scanner'
|
@@ -29,7 +29,7 @@ module Stargate
|
|
29
29
|
end
|
30
30
|
rows
|
31
31
|
end
|
32
|
-
rescue
|
32
|
+
rescue => e
|
33
33
|
# TODO: Use better handling instead of this.
|
34
34
|
if e.to_s.include?("Table")
|
35
35
|
raise TableNotFoundError, "Table '#{table_name}' Not Found"
|
@@ -49,7 +49,7 @@ module Stargate
|
|
49
49
|
elsif columns.instance_of? Hash
|
50
50
|
data = [columns]
|
51
51
|
else
|
52
|
-
raise
|
52
|
+
raise ArgumentError, "Column data should be given as an Array or Hash"
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
@@ -66,7 +66,7 @@ module Stargate
|
|
66
66
|
xml_data << "</Row></CellSet>"
|
67
67
|
|
68
68
|
Response::RowResponse.new(post_response(request.create(data.map{|col| col[:name]}), xml_data), :create_row).parse
|
69
|
-
rescue
|
69
|
+
rescue => e
|
70
70
|
if e.to_s.include?("Table")
|
71
71
|
raise TableNotFoundError, "Table '#{table_name}' Not Found"
|
72
72
|
elsif e.to_s.include?("Row")
|
@@ -81,7 +81,7 @@ module Stargate
|
|
81
81
|
begin
|
82
82
|
request = Request::RowRequest.new(table_name, name, timestamp)
|
83
83
|
Response::RowResponse.new(delete_response(request.delete(columns)), :delete_row).parse
|
84
|
-
rescue
|
84
|
+
rescue => e
|
85
85
|
if e.to_s.include?("Table")
|
86
86
|
raise TableNotFoundError, "Table '#{table_name}' Not Found"
|
87
87
|
elsif e.to_s.include?("Row")
|
@@ -43,7 +43,7 @@ module Stargate
|
|
43
43
|
scanner.table_name = table_name
|
44
44
|
scanner.batch_size = batch
|
45
45
|
scanner
|
46
|
-
rescue
|
46
|
+
rescue => e
|
47
47
|
raise StandardError, e.to_s
|
48
48
|
end
|
49
49
|
end
|
@@ -56,7 +56,7 @@ module Stargate
|
|
56
56
|
rows = []
|
57
57
|
begin
|
58
58
|
# Loop until we've reached the limit, or the scanner was exhausted (HTTP 204 returned)
|
59
|
-
until (limit && rows.size >= limit) || (response = get_response(request_url)).
|
59
|
+
until (limit && rows.size >= limit) || (response = get_response(request_url)).status == 204
|
60
60
|
rows.concat Response::ScannerResponse.new(response.body, :get_rows).parse
|
61
61
|
|
62
62
|
rows.each do |row|
|
@@ -69,7 +69,7 @@ module Stargate
|
|
69
69
|
|
70
70
|
# Prune the last few rows if the limit was passed.
|
71
71
|
(limit) ? rows.slice(0, limit) : rows
|
72
|
-
rescue
|
72
|
+
rescue => e
|
73
73
|
if e.to_s.include?("TableNotFoundException")
|
74
74
|
raise TableNotFoundError, "Table #{table_name} Not Found!"
|
75
75
|
else
|
@@ -82,7 +82,7 @@ module Stargate
|
|
82
82
|
begin
|
83
83
|
request = Request::ScannerRequest.new(scanner.table_name)
|
84
84
|
Response::ScannerResponse.new(delete_response(request.close(scanner)), :close_scanner).parse
|
85
|
-
rescue
|
85
|
+
rescue => e
|
86
86
|
if e.to_s.include?("TableNotFoundException")
|
87
87
|
raise TableNotFoundError, "Table #{table_name} Not Found!"
|
88
88
|
else
|
@@ -5,16 +5,15 @@ module Stargate
|
|
5
5
|
begin
|
6
6
|
request = Request::TableRequest.new(name)
|
7
7
|
Response::TableResponse.new(get(request.show)).parse
|
8
|
-
rescue
|
8
|
+
rescue => e
|
9
9
|
raise TableNotFoundError, "Table '#{name}' Not found"
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
13
|
def create_table(name, *args)
|
14
|
-
request = Request::TableRequest.new(name)
|
15
|
-
|
16
14
|
raise StandardError, "Table name must be of type String" unless name.instance_of? String
|
17
15
|
|
16
|
+
request = Request::TableRequest.new(name)
|
18
17
|
begin
|
19
18
|
xml_data = "<?xml version='1.0' encoding='UTF-8' standalone='yes'?><TableSchema name='#{name}' IS_META='false' IS_ROOT='false'>"
|
20
19
|
for arg in args
|
@@ -35,17 +34,16 @@ module Stargate
|
|
35
34
|
end
|
36
35
|
end
|
37
36
|
xml_data << "</TableSchema>"
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
else
|
43
|
-
raise TableFailCreateError, e.message
|
44
|
-
end
|
37
|
+
|
38
|
+
put_response(request.create, xml_data).status == 201
|
39
|
+
rescue => e
|
40
|
+
raise TableFailCreateError, e.message
|
45
41
|
end
|
46
42
|
end
|
47
43
|
|
48
44
|
def alter_table(name, *args)
|
45
|
+
raise NotImplementedError, "Altering the table is not supported yet"
|
46
|
+
|
49
47
|
raise StandardError, "Table name must be of type String" unless name.instance_of? String
|
50
48
|
|
51
49
|
request = Request::TableRequest.new(name)
|
@@ -53,7 +51,7 @@ module Stargate
|
|
53
51
|
begin
|
54
52
|
xml_data = construct_xml_stream(name, *args)
|
55
53
|
Response::TableResponse.new(put(request.update, xml_data))
|
56
|
-
rescue
|
54
|
+
rescue => e
|
57
55
|
if e.to_s.include?("TableNotFoundException")
|
58
56
|
raise TableNotFoundError, "Table '#{name}' not exists"
|
59
57
|
else
|
@@ -66,7 +64,7 @@ module Stargate
|
|
66
64
|
begin
|
67
65
|
request = Request::TableRequest.new(name)
|
68
66
|
Response::TableResponse.new(delete(request.delete(columns)))
|
69
|
-
rescue
|
67
|
+
rescue => e
|
70
68
|
if e.to_s.include?("TableNotFoundException")
|
71
69
|
raise TableNotFoundError, "Table '#{name}' not exists"
|
72
70
|
elsif e.to_s.include?("TableNotDisabledException")
|
data/lib/stargate/request.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Stargate module Request; end; end
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
3
|
+
require 'stargate/request/basic_request'
|
4
|
+
require 'stargate/request/meta_request'
|
5
|
+
require 'stargate/request/table_request'
|
6
|
+
require 'stargate/request/row_request'
|
7
|
+
require 'stargate/request/scanner_request'
|
@@ -1,8 +1,12 @@
|
|
1
1
|
begin
|
2
|
-
require '
|
2
|
+
require 'yajl/json_gem'
|
3
3
|
rescue LoadError => e
|
4
|
-
|
5
|
-
|
4
|
+
begin
|
5
|
+
require 'json'
|
6
|
+
rescue LoadError => e
|
7
|
+
puts "[hbase-stargate] json is required. Install it with 'gem install json' (or json-jruby for JRuby)"
|
8
|
+
raise e
|
9
|
+
end
|
6
10
|
end
|
7
11
|
|
8
12
|
module Stargate
|
@@ -18,8 +22,8 @@ module Stargate
|
|
18
22
|
end
|
19
23
|
|
20
24
|
def verify_success(response)
|
21
|
-
case response
|
22
|
-
when
|
25
|
+
case response.status
|
26
|
+
when 200
|
23
27
|
true
|
24
28
|
else
|
25
29
|
false
|
@@ -11,26 +11,24 @@ module Stargate
|
|
11
11
|
def parse_content(raw_data)
|
12
12
|
case @method
|
13
13
|
when :open_scanner
|
14
|
-
case raw_data
|
15
|
-
when
|
16
|
-
Stargate::Model::Scanner.new(:scanner_url => raw_data["Location"])
|
14
|
+
case raw_data.status
|
15
|
+
when 201
|
16
|
+
Stargate::Model::Scanner.new(:scanner_url => raw_data.headers["Location"])
|
17
|
+
when 404
|
18
|
+
raise TableNotFoundError, "Table #{table_name} Not Found!"
|
17
19
|
else
|
18
|
-
|
19
|
-
raise TableNotFoundError, "Table #{table_name} Not Found!"
|
20
|
-
else
|
21
|
-
raise StandardError, "Unable to open scanner. Received the following message: #{raw_data.message}"
|
22
|
-
end
|
20
|
+
raise StandardError, "Unable to open scanner. Received the following message: #{raw_data.status_line}"
|
23
21
|
end
|
24
22
|
when :get_rows
|
25
23
|
# Dispatch it to RowResponse, since that method is made
|
26
24
|
# to deal with rows already.
|
27
25
|
RowResponse.new(raw_data, :show_row).parse
|
28
26
|
when :close_scanner
|
29
|
-
case raw_data
|
30
|
-
when
|
27
|
+
case raw_data.status
|
28
|
+
when 200
|
31
29
|
return true
|
32
30
|
else
|
33
|
-
raise StandardError, "Unable to close scanner. Received the following message: #{raw_data.
|
31
|
+
raise StandardError, "Unable to close scanner. Received the following message: #{raw_data.status_line}"
|
34
32
|
end
|
35
33
|
else
|
36
34
|
puts "method '#{@method}' not supported yet"
|
data/lib/stargate/response.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Stargate module Response; end; end
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
3
|
+
require 'stargate/response/basic_response'
|
4
|
+
require 'stargate/response/meta_response'
|
5
|
+
require 'stargate/response/table_response'
|
6
|
+
require 'stargate/response/row_response'
|
7
|
+
require 'stargate/response/scanner_response'
|
data/lib/stargate/version.rb
CHANGED
data/lib/stargate.rb
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
module Stargate end
|
2
2
|
|
3
|
-
require
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
require
|
3
|
+
require 'pathname'
|
4
|
+
pwd = Pathname(__FILE__).dirname
|
5
|
+
$:.unshift(pwd.to_s) unless $:.include?(pwd.to_s) || $:.include?(pwd.expand_path.to_s)
|
6
|
+
|
7
|
+
require 'stargate/client'
|
8
|
+
require 'stargate/exception'
|
9
|
+
require 'stargate/model'
|
10
|
+
require 'stargate/request'
|
11
|
+
require 'stargate/response'
|
@@ -7,6 +7,12 @@ describe Stargate::Operation::MetaOperation do
|
|
7
7
|
@client = Stargate::Client.new(url)
|
8
8
|
end
|
9
9
|
|
10
|
+
it "should return ConnectionNotEstablishedError when server cannot be connected to" do
|
11
|
+
lambda {
|
12
|
+
Stargate::Client.new("http://doesntexist.local:8080").list_tables
|
13
|
+
}.should raise_error(Stargate::ConnectionNotEstablishedError)
|
14
|
+
end
|
15
|
+
|
10
16
|
it "should return tables" do
|
11
17
|
tables = @client.list_tables
|
12
18
|
tables.should respond_to(:size)
|
@@ -3,6 +3,7 @@ require File.join(File.dirname(__FILE__), "..", "..", "spec_helper")
|
|
3
3
|
describe Stargate::Operation::RowOperation do
|
4
4
|
before :all do
|
5
5
|
url = ENV["STARGATE_URL"].nil? ? "http://localhost:8080" : ENV["STARGATE_URL"]
|
6
|
+
|
6
7
|
@client = Stargate::Client.new(url)
|
7
8
|
|
8
9
|
table = @client.create_table("test-hbase-stargate", "col1")
|
@@ -7,16 +7,16 @@ describe Stargate::Operation::TableOperation do
|
|
7
7
|
end
|
8
8
|
|
9
9
|
it "should create a table called test-hbase-stargate" do
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
10
|
+
@table_options = { :name => 'habbit',
|
11
|
+
:max_version => 3,
|
12
|
+
:compression => Stargate::Model::CompressionType::NONE,
|
13
|
+
:in_memory => false,
|
14
|
+
:block_cache => false,
|
15
|
+
:ttl => -1,
|
16
|
+
:max_cell_size => 2147483647,
|
17
|
+
:bloomfilter => false
|
18
|
+
}
|
19
|
+
@client.create_table('test-hbase-stargate', @table_options).should be_true
|
20
20
|
end
|
21
21
|
|
22
22
|
it "should show the table info of 'test-hbase-stargate'" do
|
@@ -26,10 +26,19 @@ describe Stargate::Operation::TableOperation do
|
|
26
26
|
table.column_families.should respond_to(:each)
|
27
27
|
table.column_families.map(&:name).should include("habbit")
|
28
28
|
table.column_families.each do |cf|
|
29
|
-
cf.should
|
29
|
+
cf.should be_a_kind_of Stargate::Model::ColumnDescriptor
|
30
|
+
cf.max_versions.should == 3
|
31
|
+
cf.bloomfilter.should be_false
|
32
|
+
cf.compression.should == "NONE"
|
30
33
|
end
|
31
34
|
end
|
32
35
|
|
36
|
+
it "should throw an error when trying to run alter_table" do
|
37
|
+
lambda {
|
38
|
+
@client.alter_table("test-hbase-stargate")
|
39
|
+
}.should raise_error(NotImplementedError)
|
40
|
+
end
|
41
|
+
|
33
42
|
it "should delete the table 'test-hbase-stargate'" do
|
34
43
|
lambda {
|
35
44
|
table = @client.destroy_table("test-hbase-stargate")
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hbase-stargate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: 9
|
5
4
|
prerelease:
|
6
|
-
|
7
|
-
- 1
|
8
|
-
- 5
|
9
|
-
- 5
|
10
|
-
version: 1.5.5
|
5
|
+
version: 1.6.0
|
11
6
|
platform: ruby
|
12
7
|
authors:
|
13
8
|
- Hopper
|
@@ -15,37 +10,41 @@ autorequire:
|
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
12
|
|
18
|
-
date: 2011-
|
19
|
-
default_executable:
|
13
|
+
date: 2011-11-04 00:00:00 Z
|
20
14
|
dependencies:
|
21
15
|
- !ruby/object:Gem::Dependency
|
22
|
-
name:
|
16
|
+
name: yajl-ruby
|
23
17
|
prerelease: false
|
24
18
|
requirement: &id001 !ruby/object:Gem::Requirement
|
25
19
|
none: false
|
26
20
|
requirements:
|
27
21
|
- - ">="
|
28
22
|
- !ruby/object:Gem::Version
|
29
|
-
hash: 3
|
30
|
-
segments:
|
31
|
-
- 0
|
32
23
|
version: "0"
|
33
24
|
type: :runtime
|
34
25
|
version_requirements: *id001
|
35
26
|
- !ruby/object:Gem::Dependency
|
36
|
-
name:
|
27
|
+
name: patron
|
37
28
|
prerelease: false
|
38
29
|
requirement: &id002 !ruby/object:Gem::Requirement
|
39
30
|
none: false
|
40
31
|
requirements:
|
41
32
|
- - ">="
|
42
33
|
- !ruby/object:Gem::Version
|
43
|
-
hash: 3
|
44
|
-
segments:
|
45
|
-
- 0
|
46
34
|
version: "0"
|
47
|
-
type: :
|
35
|
+
type: :runtime
|
48
36
|
version_requirements: *id002
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: rspec
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: "0"
|
46
|
+
type: :development
|
47
|
+
version_requirements: *id003
|
49
48
|
description: A Ruby client used to interact with HBase through its Stargate web service front-end
|
50
49
|
email: greg.lu@gmail.com
|
51
50
|
executables: []
|
@@ -85,6 +84,7 @@ files:
|
|
85
84
|
- LICENSE
|
86
85
|
- README.textile
|
87
86
|
- Rakefile
|
87
|
+
- hbase-stargate.gemspec
|
88
88
|
- spec/hbase-stargate/model/column_descriptor_spec.rb
|
89
89
|
- spec/hbase-stargate/model/column_spec.rb
|
90
90
|
- spec/hbase-stargate/model/region_descriptor_spec.rb
|
@@ -104,9 +104,7 @@ files:
|
|
104
104
|
- spec/hbase-stargate/response/row_response_spec.rb
|
105
105
|
- spec/hbase-stargate/response/scanner_response_spec.rb
|
106
106
|
- spec/hbase-stargate/response/table_response_spec.rb
|
107
|
-
- spec/spec.opts
|
108
107
|
- spec/spec_helper.rb
|
109
|
-
has_rdoc: true
|
110
108
|
homepage: http://github.com/greglu/hbase-stargate
|
111
109
|
licenses: []
|
112
110
|
|
@@ -120,25 +118,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
120
118
|
requirements:
|
121
119
|
- - ">="
|
122
120
|
- !ruby/object:Gem::Version
|
123
|
-
hash: 3
|
124
|
-
segments:
|
125
|
-
- 0
|
126
121
|
version: "0"
|
127
122
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
128
123
|
none: false
|
129
124
|
requirements:
|
130
125
|
- - ">="
|
131
126
|
- !ruby/object:Gem::Version
|
132
|
-
hash: 23
|
133
|
-
segments:
|
134
|
-
- 1
|
135
|
-
- 3
|
136
|
-
- 6
|
137
127
|
version: 1.3.6
|
138
128
|
requirements: []
|
139
129
|
|
140
130
|
rubyforge_project:
|
141
|
-
rubygems_version: 1.
|
131
|
+
rubygems_version: 1.8.11
|
142
132
|
signing_key:
|
143
133
|
specification_version: 3
|
144
134
|
summary: Ruby client for HBase's Stargate web service
|
@@ -162,5 +152,4 @@ test_files:
|
|
162
152
|
- spec/hbase-stargate/response/row_response_spec.rb
|
163
153
|
- spec/hbase-stargate/response/scanner_response_spec.rb
|
164
154
|
- spec/hbase-stargate/response/table_response_spec.rb
|
165
|
-
- spec/spec.opts
|
166
155
|
- spec/spec_helper.rb
|
data/spec/spec.opts
DELETED