ilios 0.4.8 → 0.4.10
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 +4 -4
- data/Gemfile +1 -0
- data/LICENSE +21 -0
- data/README.md +3 -0
- data/Rakefile +10 -0
- data/docker-compose.yml +1 -1
- data/ext/ilios/cluster.c +7 -4
- data/ext/ilios/extconf.rb +4 -17
- data/ext/ilios/future.c +51 -39
- data/ext/ilios/ilios.c +21 -0
- data/ext/ilios/ilios.h +0 -1
- data/ext/ilios/session.c +0 -3
- data/ilios.gemspec +0 -1
- data/lib/ilios/version.rb +2 -2
- data/sig/ilios.rbs +23 -6
- metadata +4 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1e873b74dbb71ac4a950cf02eed7f2edf1207e8e2aabfd70575643b981af4f6c
|
4
|
+
data.tar.gz: 8312031b4094cc1a8849ca87530960e8140109a520e08421ed5ef9c21418f3ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86df26c6d95ec57893a84a77e032d3380fb6f6e7f0bda23b59b8e8a8e170bea2a98c2fa1db32c9e7860220a6b3768fec3048c823c8093c23efdc87a16604d4a1
|
7
|
+
data.tar.gz: 51357dab484bf3ef443db260292c62f9f45cff02a40439d80f1ca580bcf828816bfe38db916a448a350b89b3e78ae5dafaa0ec7e1756b6a92f228070e6dcdfc2
|
data/Gemfile
CHANGED
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2024 Watson
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# Ilios
|
2
2
|
|
3
|
+
[](https://badge.fury.io/rb/ilios)
|
4
|
+
[](https://github.com/Watson1978/ilios/actions/workflows/CI.yml)
|
5
|
+
|
3
6
|
Ilios that Cassandra driver written by C language for Ruby using [DataStax C/C++ Driver](https://github.com/datastax/cpp-driver).
|
4
7
|
|
5
8
|
## Installation
|
data/Rakefile
CHANGED
@@ -14,3 +14,13 @@ end
|
|
14
14
|
Rake::TestTask.new do |task|
|
15
15
|
task.pattern = 'test/test_*.rb'
|
16
16
|
end
|
17
|
+
|
18
|
+
namespace :rbs do
|
19
|
+
desc 'Validate RBS definitions'
|
20
|
+
task :validate do
|
21
|
+
all_sigs = Dir.glob('sig').map { |dir| "-I #{dir}" }.join(' ')
|
22
|
+
sh("bundle exec rbs #{all_sigs} validate") do |ok, _|
|
23
|
+
abort('one or more rbs validate failed') unless ok
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/docker-compose.yml
CHANGED
data/ext/ilios/cluster.c
CHANGED
@@ -49,6 +49,7 @@ static VALUE cluster_connect(VALUE self)
|
|
49
49
|
{
|
50
50
|
CassandraSession *cassandra_session;
|
51
51
|
CassandraCluster *cassandra_cluster;
|
52
|
+
CassFuture* connect_future;
|
52
53
|
VALUE cassandra_session_obj;
|
53
54
|
const char *keyspace = "";
|
54
55
|
|
@@ -60,16 +61,18 @@ static VALUE cluster_connect(VALUE self)
|
|
60
61
|
cassandra_session_obj = CREATE_SESSION(cassandra_session);
|
61
62
|
cassandra_session->cluster_obj = self;
|
62
63
|
cassandra_session->session = cass_session_new();
|
63
|
-
|
64
|
-
nogvl_future_wait(
|
64
|
+
connect_future = cass_session_connect_keyspace(cassandra_session->session, cassandra_cluster->cluster, keyspace);
|
65
|
+
nogvl_future_wait(connect_future);
|
65
66
|
|
66
|
-
if (cass_future_error_code(
|
67
|
+
if (cass_future_error_code(connect_future) != CASS_OK) {
|
67
68
|
char error[4096] = { 0 };
|
68
69
|
|
69
|
-
strncpy(error, cass_error_desc(cass_future_error_code(
|
70
|
+
strncpy(error, cass_error_desc(cass_future_error_code(connect_future)), sizeof(error) - 1);
|
71
|
+
cass_future_free(connect_future);
|
70
72
|
rb_raise(eConnectError, "Unable to connect: %s", error);
|
71
73
|
return Qnil;
|
72
74
|
}
|
75
|
+
cass_future_free(connect_future);
|
73
76
|
|
74
77
|
return cassandra_session_obj;
|
75
78
|
}
|
data/ext/ilios/extconf.rb
CHANGED
@@ -4,7 +4,6 @@ require File.expand_path('../../lib/ilios/version', __dir__)
|
|
4
4
|
require 'fileutils'
|
5
5
|
require 'mini_portile2'
|
6
6
|
require 'mkmf'
|
7
|
-
require 'native-package-installer'
|
8
7
|
|
9
8
|
have_func('malloc_usable_size')
|
10
9
|
have_func('malloc_size')
|
@@ -24,6 +23,7 @@ def num_cpu_cores
|
|
24
23
|
end
|
25
24
|
|
26
25
|
return 1 if cores <= 0
|
26
|
+
|
27
27
|
cores >= 7 ? MAX_CORES : cores
|
28
28
|
end
|
29
29
|
|
@@ -40,25 +40,9 @@ module LibuvInstaller
|
|
40
40
|
end
|
41
41
|
|
42
42
|
def self.install
|
43
|
-
return if install_from_package
|
44
|
-
|
45
43
|
install_from_source
|
46
44
|
end
|
47
45
|
|
48
|
-
def self.install_from_package
|
49
|
-
NativePackageInstaller.install(
|
50
|
-
alpine_linux: 'libuv-dev',
|
51
|
-
alt_linux: 'libuv',
|
52
|
-
arch_linux: 'libuv',
|
53
|
-
debian: 'libuv1-dev',
|
54
|
-
freebsd: 'libuv',
|
55
|
-
gentoo_linux: 'libuv',
|
56
|
-
homebrew: 'libuv',
|
57
|
-
macports: 'libuv',
|
58
|
-
redhat: 'libuv-devel'
|
59
|
-
)
|
60
|
-
end
|
61
|
-
|
62
46
|
def self.install_from_source
|
63
47
|
unless File.exist?(LIBUV_INSTALL_PATH)
|
64
48
|
libuv_recipe = LibuvRecipe.new('libuv', Ilios::LIBUV_VERSION, make_command: "make -j #{num_cpu_cores}")
|
@@ -158,4 +142,7 @@ else
|
|
158
142
|
CassandraDriverInstaller.install
|
159
143
|
end
|
160
144
|
|
145
|
+
$CPPFLAGS += " #{ENV['CPPFLAGS']}"
|
146
|
+
$LDFLAGS += " #{ENV['LDFLAGS']}"
|
147
|
+
|
161
148
|
create_makefile('ilios')
|
data/ext/ilios/future.c
CHANGED
@@ -195,31 +195,12 @@ VALUE future_create(CassFuture *future, VALUE session, future_kind kind)
|
|
195
195
|
return cassandra_future_obj;
|
196
196
|
}
|
197
197
|
|
198
|
-
|
199
|
-
* Run block when future resolves to a value.
|
200
|
-
*
|
201
|
-
* @yieldparam value [Cassandra::Statement, Cassandra::Result] A value.
|
202
|
-
* Yields +Cassandra::Statement+ object when future was created by +Cassandra::Session#prepare_async+.
|
203
|
-
* Yields +Cassandra::Result+ object when future was created by +Cassandra::Session#execute_async+.
|
204
|
-
* @return [Cassandra::Future] self.
|
205
|
-
* @raise [Cassandra::ExecutionError] If this method will be called twice.
|
206
|
-
* @raise [ArgumentError] If no block was given.
|
207
|
-
*/
|
208
|
-
static VALUE future_on_success(VALUE self)
|
198
|
+
static VALUE future_on_success_synchronize(VALUE future)
|
209
199
|
{
|
210
200
|
CassandraFuture *cassandra_future;
|
211
201
|
bool wakeup_thread = false;
|
212
202
|
|
213
|
-
GET_FUTURE(
|
214
|
-
|
215
|
-
if (cassandra_future->on_success_block) {
|
216
|
-
rb_raise(eExecutionError, "It should not call twice");
|
217
|
-
}
|
218
|
-
if (!rb_block_given_p()) {
|
219
|
-
rb_raise(rb_eArgError, "no block given");
|
220
|
-
}
|
221
|
-
|
222
|
-
rb_mutex_lock(cassandra_future->proc_mutex);
|
203
|
+
GET_FUTURE(future, cassandra_future);
|
223
204
|
|
224
205
|
if (!cassandra_future->on_failure_block) {
|
225
206
|
// Invoke the callback with thread pool only once
|
@@ -229,44 +210,52 @@ static VALUE future_on_success(VALUE self)
|
|
229
210
|
cassandra_future->on_success_block = rb_block_proc();
|
230
211
|
|
231
212
|
if (cass_future_ready(cassandra_future->future)) {
|
232
|
-
rb_mutex_unlock(cassandra_future->proc_mutex);
|
233
213
|
uv_sem_post(&cassandra_future->sem);
|
234
214
|
if (cass_future_error_code(cassandra_future->future) == CASS_OK) {
|
235
215
|
future_result_success_yield(cassandra_future);
|
236
216
|
}
|
237
|
-
return
|
217
|
+
return future;
|
238
218
|
}
|
239
219
|
|
240
220
|
if (wakeup_thread) {
|
241
|
-
future_queue_push(future_thread_pool_get(cassandra_future),
|
221
|
+
future_queue_push(future_thread_pool_get(cassandra_future), future);
|
242
222
|
}
|
243
|
-
rb_mutex_unlock(cassandra_future->proc_mutex);
|
244
223
|
|
245
|
-
return
|
224
|
+
return future;
|
246
225
|
}
|
247
226
|
|
248
227
|
/**
|
249
|
-
* Run block when future resolves to
|
228
|
+
* Run block when future resolves to a value.
|
250
229
|
*
|
230
|
+
* @yieldparam value [Cassandra::Statement, Cassandra::Result] A value.
|
231
|
+
* Yields +Cassandra::Statement+ object when future was created by +Cassandra::Session#prepare_async+.
|
232
|
+
* Yields +Cassandra::Result+ object when future was created by +Cassandra::Session#execute_async+.
|
251
233
|
* @return [Cassandra::Future] self.
|
252
234
|
* @raise [Cassandra::ExecutionError] If this method will be called twice.
|
253
235
|
* @raise [ArgumentError] If no block was given.
|
254
236
|
*/
|
255
|
-
static VALUE
|
237
|
+
static VALUE future_on_success(VALUE self)
|
256
238
|
{
|
257
239
|
CassandraFuture *cassandra_future;
|
258
|
-
bool wakeup_thread = false;
|
259
240
|
|
260
241
|
GET_FUTURE(self, cassandra_future);
|
261
242
|
|
262
|
-
if (cassandra_future->
|
243
|
+
if (cassandra_future->on_success_block) {
|
263
244
|
rb_raise(eExecutionError, "It should not call twice");
|
264
245
|
}
|
265
246
|
if (!rb_block_given_p()) {
|
266
247
|
rb_raise(rb_eArgError, "no block given");
|
267
248
|
}
|
268
249
|
|
269
|
-
|
250
|
+
return rb_mutex_synchronize(cassandra_future->proc_mutex, future_on_success_synchronize, self);
|
251
|
+
}
|
252
|
+
|
253
|
+
static VALUE future_on_failure_synchronize(VALUE future)
|
254
|
+
{
|
255
|
+
CassandraFuture *cassandra_future;
|
256
|
+
bool wakeup_thread = false;
|
257
|
+
|
258
|
+
GET_FUTURE(future, cassandra_future);
|
270
259
|
|
271
260
|
if (!cassandra_future->on_success_block) {
|
272
261
|
// Invoke the callback with thread pool only once
|
@@ -276,20 +265,41 @@ static VALUE future_on_failure(VALUE self)
|
|
276
265
|
cassandra_future->on_failure_block = rb_block_proc();
|
277
266
|
|
278
267
|
if (cass_future_ready(cassandra_future->future)) {
|
279
|
-
rb_mutex_unlock(cassandra_future->proc_mutex);
|
280
268
|
uv_sem_post(&cassandra_future->sem);
|
281
269
|
if (cass_future_error_code(cassandra_future->future) != CASS_OK) {
|
282
270
|
future_result_failure_yield(cassandra_future);
|
283
271
|
}
|
284
|
-
return
|
272
|
+
return future;
|
285
273
|
}
|
286
274
|
|
287
275
|
if (wakeup_thread) {
|
288
|
-
future_queue_push(future_thread_pool_get(cassandra_future),
|
276
|
+
future_queue_push(future_thread_pool_get(cassandra_future), future);
|
289
277
|
}
|
290
|
-
rb_mutex_unlock(cassandra_future->proc_mutex);
|
291
278
|
|
292
|
-
return
|
279
|
+
return future;
|
280
|
+
}
|
281
|
+
|
282
|
+
/**
|
283
|
+
* Run block when future resolves to error.
|
284
|
+
*
|
285
|
+
* @return [Cassandra::Future] self.
|
286
|
+
* @raise [Cassandra::ExecutionError] If this method will be called twice.
|
287
|
+
* @raise [ArgumentError] If no block was given.
|
288
|
+
*/
|
289
|
+
static VALUE future_on_failure(VALUE self)
|
290
|
+
{
|
291
|
+
CassandraFuture *cassandra_future;
|
292
|
+
|
293
|
+
GET_FUTURE(self, cassandra_future);
|
294
|
+
|
295
|
+
if (cassandra_future->on_failure_block) {
|
296
|
+
rb_raise(eExecutionError, "It should not call twice");
|
297
|
+
}
|
298
|
+
if (!rb_block_given_p()) {
|
299
|
+
rb_raise(rb_eArgError, "no block given");
|
300
|
+
}
|
301
|
+
|
302
|
+
return rb_mutex_synchronize(cassandra_future->proc_mutex, future_on_failure_synchronize, self);
|
293
303
|
}
|
294
304
|
|
295
305
|
/**
|
@@ -303,16 +313,18 @@ static VALUE future_await(VALUE self)
|
|
303
313
|
|
304
314
|
GET_FUTURE(self, cassandra_future);
|
305
315
|
|
316
|
+
rb_mutex_lock(cassandra_future->proc_mutex);
|
306
317
|
if (cassandra_future->already_waited) {
|
318
|
+
rb_mutex_unlock(cassandra_future->proc_mutex);
|
307
319
|
return self;
|
308
320
|
}
|
321
|
+
cassandra_future->already_waited = true;
|
322
|
+
rb_mutex_unlock(cassandra_future->proc_mutex);
|
309
323
|
|
324
|
+
nogvl_future_wait(cassandra_future->future);
|
310
325
|
if (cassandra_future->on_success_block || cassandra_future->on_failure_block) {
|
311
326
|
nogvl_sem_wait(&cassandra_future->sem);
|
312
|
-
} else {
|
313
|
-
nogvl_future_wait(cassandra_future->future);
|
314
327
|
}
|
315
|
-
cassandra_future->already_waited = true;
|
316
328
|
return self;
|
317
329
|
}
|
318
330
|
|
data/ext/ilios/ilios.c
CHANGED
@@ -58,6 +58,18 @@ static void ilios_free(void *ptr)
|
|
58
58
|
}
|
59
59
|
}
|
60
60
|
|
61
|
+
/**
|
62
|
+
* Sets the log level.
|
63
|
+
* Default is +LOG_ERROR+.
|
64
|
+
*
|
65
|
+
* @return [Cassandra] self.
|
66
|
+
*/
|
67
|
+
static VALUE cassandra_set_log_level(VALUE self, VALUE log_level)
|
68
|
+
{
|
69
|
+
cass_log_set_level(NUM2INT(log_level));
|
70
|
+
return self;
|
71
|
+
}
|
72
|
+
|
61
73
|
void Init_ilios(void)
|
62
74
|
{
|
63
75
|
rb_ext_ractor_safe(true);
|
@@ -83,6 +95,15 @@ void Init_ilios(void)
|
|
83
95
|
id_report_on_exception = rb_intern("report_on_exception=");
|
84
96
|
sym_unsupported_column_type = ID2SYM(rb_intern("unsupported_column_type"));
|
85
97
|
|
98
|
+
rb_define_module_function(mCassandra, "log_level", cassandra_set_log_level, 1);
|
99
|
+
rb_define_const(mCassandra, "LOG_DISABLED", INT2NUM(CASS_LOG_DISABLED));
|
100
|
+
rb_define_const(mCassandra, "LOG_CRITICAL", INT2NUM(CASS_LOG_CRITICAL));
|
101
|
+
rb_define_const(mCassandra, "LOG_ERROR", INT2NUM(CASS_LOG_ERROR));
|
102
|
+
rb_define_const(mCassandra, "LOG_WARN", INT2NUM(CASS_LOG_WARN));
|
103
|
+
rb_define_const(mCassandra, "LOG_INFO", INT2NUM(CASS_LOG_INFO));
|
104
|
+
rb_define_const(mCassandra, "LOG_DEBUG", INT2NUM(CASS_LOG_DEBUG));
|
105
|
+
rb_define_const(mCassandra, "LOG_TRACE", INT2NUM(CASS_LOG_TRACE));
|
106
|
+
|
86
107
|
Init_cluster();
|
87
108
|
Init_session();
|
88
109
|
Init_statement();
|
data/ext/ilios/ilios.h
CHANGED
data/ext/ilios/session.c
CHANGED
@@ -136,9 +136,6 @@ static void session_destroy(void *ptr)
|
|
136
136
|
if (cassandra_session->session) {
|
137
137
|
cass_session_free(cassandra_session->session);
|
138
138
|
}
|
139
|
-
if (cassandra_session->connect_future) {
|
140
|
-
cass_future_free(cassandra_session->connect_future);
|
141
|
-
}
|
142
139
|
xfree(cassandra_session);
|
143
140
|
}
|
144
141
|
|
data/ilios.gemspec
CHANGED
data/lib/ilios/version.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Ilios
|
4
|
-
VERSION = '0.4.
|
4
|
+
VERSION = '0.4.10'
|
5
5
|
public_constant :VERSION
|
6
6
|
|
7
7
|
CASSANDRA_CPP_DRIVER_VERSION = '2.17.1'
|
8
8
|
public_constant :CASSANDRA_CPP_DRIVER_VERSION
|
9
9
|
|
10
|
-
LIBUV_VERSION = '1.
|
10
|
+
LIBUV_VERSION = '1.48.0'
|
11
11
|
public_constant :LIBUV_VERSION
|
12
12
|
end
|
data/sig/ilios.rbs
CHANGED
@@ -2,7 +2,25 @@ module Ilios
|
|
2
2
|
VERSION: String
|
3
3
|
|
4
4
|
module Cassandra
|
5
|
+
LOG_DISABLED: Integer
|
6
|
+
LOG_CRITICAL: Integer
|
7
|
+
LOG_ERROR: Integer
|
8
|
+
LOG_WARN: Integer
|
9
|
+
LOG_INFO: Integer
|
10
|
+
LOG_DEBUG: Integer
|
11
|
+
LOG_TRACE: Integer
|
12
|
+
|
13
|
+
def self.log_level: (Integer log_level) -> self
|
14
|
+
|
5
15
|
class Cluster
|
16
|
+
PROTOCOL_VERSION_V1: Integer
|
17
|
+
PROTOCOL_VERSION_V2: Integer
|
18
|
+
PROTOCOL_VERSION_V3: Integer
|
19
|
+
PROTOCOL_VERSION_V4: Integer
|
20
|
+
PROTOCOL_VERSION_V5: Integer
|
21
|
+
PROTOCOL_VERSION_DSEV1: Integer
|
22
|
+
PROTOCOL_VERSION_DSEV2: Integer
|
23
|
+
|
6
24
|
def connect: () -> Ilios::Cassandra::Session
|
7
25
|
def hosts: (Array[String]) -> self
|
8
26
|
def port: (Integer) -> self
|
@@ -23,7 +41,7 @@ module Ilios
|
|
23
41
|
end
|
24
42
|
|
25
43
|
class Statement
|
26
|
-
def bind: (Hash[Symbol
|
44
|
+
def bind: (Hash[Symbol | String, untyped]) -> self
|
27
45
|
def page_size=: (Integer) -> self
|
28
46
|
def idempotent=: (true | false) -> self
|
29
47
|
end
|
@@ -31,7 +49,7 @@ module Ilios
|
|
31
49
|
class Future
|
32
50
|
def on_success: () { (Ilios::Cassandra::Result) -> void } -> self
|
33
51
|
def on_failure: () { () -> void } -> self
|
34
|
-
def await: () ->
|
52
|
+
def await: () -> self
|
35
53
|
end
|
36
54
|
|
37
55
|
class Result
|
@@ -39,10 +57,9 @@ module Ilios
|
|
39
57
|
|
40
58
|
include Enumerable[row_type]
|
41
59
|
|
42
|
-
def each:
|
43
|
-
|
44
|
-
def next_page: () -> Ilios::Cassandra::Result |
|
45
|
-
() -> nil
|
60
|
+
def each: () { (row_type) -> void } -> void
|
61
|
+
| () -> ::Enumerator[row_type, self]
|
62
|
+
def next_page: () -> (Ilios::Cassandra::Result | nil)
|
46
63
|
end
|
47
64
|
end
|
48
65
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ilios
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Watson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-02-
|
11
|
+
date: 2024-02-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mini_portile2
|
@@ -24,26 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2.8'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: native-package-installer
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '1.1'
|
34
|
-
- - ">="
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: 1.1.9
|
37
|
-
type: :runtime
|
38
|
-
prerelease: false
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
40
|
-
requirements:
|
41
|
-
- - "~>"
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: '1.1'
|
44
|
-
- - ">="
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 1.1.9
|
47
27
|
description: Cassandra driver written by C language
|
48
28
|
email:
|
49
29
|
- watson1978@gmail.com
|
@@ -54,6 +34,7 @@ extra_rdoc_files: []
|
|
54
34
|
files:
|
55
35
|
- ".yardopts"
|
56
36
|
- Gemfile
|
37
|
+
- LICENSE
|
57
38
|
- README.md
|
58
39
|
- Rakefile
|
59
40
|
- docker-compose.yml
|
@@ -77,7 +58,7 @@ metadata:
|
|
77
58
|
homepage_uri: https://github.com/Watson1978/ilios
|
78
59
|
source_code_uri: https://github.com/Watson1978/ilios
|
79
60
|
bug_tracker_uri: https://github.com/Watson1978/ilios/issues
|
80
|
-
documentation_uri: https://www.rubydoc.info/gems/ilios/0.4.
|
61
|
+
documentation_uri: https://www.rubydoc.info/gems/ilios/0.4.10
|
81
62
|
rubygems_mfa_required: 'true'
|
82
63
|
post_install_message:
|
83
64
|
rdoc_options: []
|