rocksdb-ruby 0.0.9 → 0.1.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 96d67a886d0334375d5cb1e0b467231dc021d42b
4
- data.tar.gz: 4d7dd5d7f9b5bb9abaa97e9b5ea253b88ea172d8
3
+ metadata.gz: 2e6ff2cad354cadc31a44416ef54a7d34f1d3378
4
+ data.tar.gz: 9c9ec1928f6528ee8d0d5ca65280cdaa0d577ef4
5
5
  SHA512:
6
- metadata.gz: 3be5427f297b326a9a37d2aa9f336071b3a19e1fac2455d5b958a67df79cf5b26f8b97bf22c424a66befff7890828ea7062b6c084ce63a5114dd69543a1a590a
7
- data.tar.gz: b8df25ee30ec7f83ea9f5af9731020cc7ed21365c0a611638fee0312f332a3019b5caed9cfdf83388d25d6d9a8393298278e445688e0e158633e91a2fc7e4d0f
6
+ metadata.gz: 16d1135da6af3589a3a7d99d1ab2da714a353fb3286e7ed9f70fa540a3079719396be9a5512719890d89df9bc074303be04c8b8eb105eb1f175680c33e472168
7
+ data.tar.gz: 80e078c1ac478de2e77527d532080efb127d992ab77505e8924da3c9c0ca65d18cf044c318320823c995744ecd184c2957bc91ae8774e2a5c9b579f6f763f613
@@ -8,17 +8,33 @@ extern "C" {
8
8
 
9
9
  VALUE rocksdb_db_init(int argc, VALUE* argv, VALUE self) {
10
10
  VALUE v_db_file_name;
11
+ VALUE v_options;
11
12
  rocksdb_pointer* db_pointer;
12
13
  rocksdb::DB* db;
13
-
14
+ rocksdb::Options options;
15
+ rocksdb::Status status;
16
+ std::string db_file_name;
17
+ bool readonly;
18
+
14
19
  Data_Get_Struct(self, rocksdb_pointer, db_pointer);
15
- rb_scan_args(argc, argv, "01", &v_db_file_name);
16
- Check_Type(v_db_file_name, T_STRING);
17
- std::string db_file_name = std::string((char*)RSTRING_PTR(v_db_file_name));
20
+ rb_scan_args(argc, argv, "11", &v_db_file_name, &v_options);
18
21
 
19
- rocksdb::Options options;
22
+ Check_Type(v_db_file_name, T_STRING);
23
+ db_file_name = std::string((char*)RSTRING_PTR(v_db_file_name));
24
+
25
+ readonly = false;
26
+ if (TYPE(v_options) == T_HASH) {
27
+ VALUE v = rb_hash_aref(v_options, ID2SYM(rb_intern("readonly")));
28
+ if(v == Qtrue){
29
+ readonly = true;
30
+ }
31
+ }
20
32
  options.create_if_missing = true;
21
- rocksdb::Status status = rocksdb::DB::Open(options, db_file_name, &db);
33
+ if(readonly){
34
+ status = rocksdb::DB::OpenForReadOnly(options, db_file_name, &db);
35
+ }else{
36
+ status = rocksdb::DB::Open(options, db_file_name, &db);
37
+ }
22
38
 
23
39
  db_pointer->db = db;
24
40
 
@@ -124,12 +140,14 @@ extern "C" {
124
140
  rocksdb_pointer* db_pointer;
125
141
  Data_Get_Struct(self, rocksdb_pointer, db_pointer);
126
142
 
127
- db_free(db_pointer);
143
+ if(db_pointer->db != NULL){
144
+ delete db_pointer->db;
145
+ db_pointer->db = NULL;
146
+ }
128
147
  return Qnil;
129
148
  }
130
149
 
131
150
  void db_free(rocksdb_pointer* db_pointer){
132
- std::cout << "free\n";
133
151
  if(db_pointer->db != NULL){
134
152
  delete db_pointer->db;
135
153
  db_pointer->db = NULL;
@@ -1,5 +1,5 @@
1
1
  module Rocksdb
2
2
  module Ruby
3
- VERSION = "0.0.9"
3
+ VERSION = "0.1.0"
4
4
  end
5
5
  end
@@ -0,0 +1,18 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+ require "rocksdb"
4
+
5
+ describe RocksDB do
6
+ before do
7
+ @rocksdb = RocksDB::DB.new "/tmp/file2", {:readonly => true}
8
+ end
9
+
10
+ it 'should get data' do
11
+ @rocksdb.put("test:multi_db", "10")
12
+ expect(@rocksdb.get("test:multi_db")).to eq "2"
13
+ end
14
+
15
+ after do
16
+ @rocksdb.close
17
+ end
18
+ end
data/spec/db_spec.rb CHANGED
@@ -57,6 +57,7 @@ describe RocksDB do
57
57
 
58
58
  expect(@rocksdb.get("test:multi_db")).to eq "1"
59
59
  expect(@rocksdb2.get("test:multi_db")).to eq "2"
60
+ @rocksdb2.close
60
61
  end
61
62
 
62
63
  it 'should use japanese charactor' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rocksdb-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Isamu Arimoto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-13 00:00:00.000000000 Z
11
+ date: 2014-01-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,7 @@ files:
80
80
  - lib/rocksdb/ruby.rb
81
81
  - lib/rocksdb/ruby/version.rb
82
82
  - rocksdb-ruby.gemspec
83
+ - spec/db_readonly_spec.rb
83
84
  - spec/db_spec.rb
84
85
  - spec/iterator_spec.rb
85
86
  - spec/spec_helper.rb
@@ -109,6 +110,7 @@ signing_key:
109
110
  specification_version: 4
110
111
  summary: A simple RocksDB library for Ruby
111
112
  test_files:
113
+ - spec/db_readonly_spec.rb
112
114
  - spec/db_spec.rb
113
115
  - spec/iterator_spec.rb
114
116
  - spec/spec_helper.rb