knjrbfw 0.0.103 → 0.0.104
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/Gemfile +1 -0
- data/Gemfile.lock +12 -8
- data/VERSION +1 -1
- data/knjrbfw.gemspec +5 -2
- data/lib/knj/knjdb/drivers/mysql/knjdb_mysql.rb +2 -2
- data/lib/knj/knjdb/drivers/sqlite3/knjdb_sqlite3_tables.rb +9 -0
- data/lib/knj/knjdb/libknjdb.rb +30 -2
- data/lib/knj/os.rb +13 -5
- data/spec/amixer_spec.rb +17 -12
- data/spec/db_spec.rb +45 -1
- data/spec/objects_spec.rb +6 -1
- data/spec/process_spec.rb +2 -0
- metadata +19 -3
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
-
|
5
|
-
|
4
|
+
array_enumerator (0.0.3)
|
5
|
+
datet (0.0.25)
|
6
|
+
diff-lcs (1.2.2)
|
6
7
|
git (1.2.5)
|
7
8
|
http2 (0.0.13)
|
8
9
|
jeweler (1.8.4)
|
@@ -11,32 +12,35 @@ GEM
|
|
11
12
|
rake
|
12
13
|
rdoc
|
13
14
|
json (1.7.7)
|
14
|
-
php4r (0.0.
|
15
|
+
php4r (0.0.4)
|
15
16
|
datet
|
16
17
|
http2
|
17
|
-
|
18
|
-
|
18
|
+
string-strtr
|
19
|
+
rake (10.0.4)
|
20
|
+
rdoc (4.0.1)
|
19
21
|
json (~> 1.4)
|
20
22
|
rmagick (2.13.2)
|
21
23
|
rspec (2.13.0)
|
22
24
|
rspec-core (~> 2.13.0)
|
23
25
|
rspec-expectations (~> 2.13.0)
|
24
26
|
rspec-mocks (~> 2.13.0)
|
25
|
-
rspec-core (2.13.
|
27
|
+
rspec-core (2.13.1)
|
26
28
|
rspec-expectations (2.13.0)
|
27
29
|
diff-lcs (>= 1.1.3, < 2.0)
|
28
|
-
rspec-mocks (2.13.
|
30
|
+
rspec-mocks (2.13.1)
|
29
31
|
ruby_process (0.0.8)
|
30
32
|
tsafe
|
31
33
|
wref
|
32
34
|
sqlite3 (1.3.7)
|
35
|
+
string-strtr (0.0.3)
|
33
36
|
tsafe (0.0.11)
|
34
|
-
wref (0.0.
|
37
|
+
wref (0.0.6)
|
35
38
|
|
36
39
|
PLATFORMS
|
37
40
|
ruby
|
38
41
|
|
39
42
|
DEPENDENCIES
|
43
|
+
array_enumerator
|
40
44
|
bundler
|
41
45
|
datet
|
42
46
|
http2
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.104
|
data/knjrbfw.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "knjrbfw"
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.104"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Kasper Johansen"]
|
12
|
-
s.date = "2013-
|
12
|
+
s.date = "2013-04-11"
|
13
13
|
s.description = "Including stuff for HTTP, SSH and much more."
|
14
14
|
s.email = "k@spernj.org"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -284,6 +284,7 @@ Gem::Specification.new do |s|
|
|
284
284
|
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
285
285
|
s.add_development_dependency(%q<sqlite3>, [">= 0"])
|
286
286
|
s.add_development_dependency(%q<rmagick>, [">= 0"])
|
287
|
+
s.add_development_dependency(%q<array_enumerator>, [">= 0"])
|
287
288
|
else
|
288
289
|
s.add_dependency(%q<wref>, [">= 0"])
|
289
290
|
s.add_dependency(%q<tsafe>, [">= 0"])
|
@@ -296,6 +297,7 @@ Gem::Specification.new do |s|
|
|
296
297
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
297
298
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
298
299
|
s.add_dependency(%q<rmagick>, [">= 0"])
|
300
|
+
s.add_dependency(%q<array_enumerator>, [">= 0"])
|
299
301
|
end
|
300
302
|
else
|
301
303
|
s.add_dependency(%q<wref>, [">= 0"])
|
@@ -309,6 +311,7 @@ Gem::Specification.new do |s|
|
|
309
311
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
310
312
|
s.add_dependency(%q<sqlite3>, [">= 0"])
|
311
313
|
s.add_dependency(%q<rmagick>, [">= 0"])
|
314
|
+
s.add_dependency(%q<array_enumerator>, [">= 0"])
|
312
315
|
end
|
313
316
|
end
|
314
317
|
|
@@ -332,7 +332,7 @@ class KnjDB_mysql
|
|
332
332
|
sql << ","
|
333
333
|
end
|
334
334
|
|
335
|
-
sql <<
|
335
|
+
sql << @knjdb.sqlval(val)
|
336
336
|
end
|
337
337
|
else
|
338
338
|
hash.each do |key, val|
|
@@ -342,7 +342,7 @@ class KnjDB_mysql
|
|
342
342
|
sql << ","
|
343
343
|
end
|
344
344
|
|
345
|
-
sql <<
|
345
|
+
sql << @knjdb.sqlval(val)
|
346
346
|
end
|
347
347
|
end
|
348
348
|
end
|
@@ -113,6 +113,15 @@ class KnjDB_sqlite3::Tables::Table
|
|
113
113
|
return @data[:maxlength]
|
114
114
|
end
|
115
115
|
|
116
|
+
def reload
|
117
|
+
@data = @db.select("sqlite_master", {"type" => "table", "name" => self.name}, {"orderby" => "name"}).fetch
|
118
|
+
end
|
119
|
+
|
120
|
+
def rows_count
|
121
|
+
data = @db.q("SELECT COUNT(*) AS count FROM `#{self.name}`").fetch
|
122
|
+
return data[:count].to_i
|
123
|
+
end
|
124
|
+
|
116
125
|
#Drops the table from the database.
|
117
126
|
def drop
|
118
127
|
raise "Cant drop native table: '#{self.name}'." if self.native?
|
data/lib/knj/knjdb/libknjdb.rb
CHANGED
@@ -264,7 +264,7 @@ class Knj::Db
|
|
264
264
|
sql << "#{@sep_col}#{key}#{@sep_col}"
|
265
265
|
end
|
266
266
|
|
267
|
-
sql << ")
|
267
|
+
sql << ") VALUES ("
|
268
268
|
|
269
269
|
first = true
|
270
270
|
arr_insert.each do |key, value|
|
@@ -274,7 +274,7 @@ class Knj::Db
|
|
274
274
|
sql << ", "
|
275
275
|
end
|
276
276
|
|
277
|
-
sql <<
|
277
|
+
sql << self.sqlval(value)
|
278
278
|
end
|
279
279
|
|
280
280
|
sql << ")"
|
@@ -289,6 +289,23 @@ class Knj::Db
|
|
289
289
|
end
|
290
290
|
end
|
291
291
|
|
292
|
+
#Returns the correct SQL-value for the given value. If it is a number, then just the raw number as a string will be returned. nil's will be NULL and strings will have quotes and will be escaped.
|
293
|
+
def sqlval(val)
|
294
|
+
return @conn.sqlval(val) if @conn.respond_to?(:sqlval)
|
295
|
+
|
296
|
+
if val.is_a?(Fixnum) or val.is_a?(Integer)
|
297
|
+
return val.to_s
|
298
|
+
elsif val == nil
|
299
|
+
return "NULL"
|
300
|
+
elsif val.is_a?(Date)
|
301
|
+
return "#{@sep_val}#{Datet.in(val).dbstr(:time => false)}#{@sep_val}"
|
302
|
+
elsif val.is_a?(Time) or val.is_a?(DateTime)
|
303
|
+
return "#{@sep_val}#{Datet.in(val).dbstr}#{@sep_val}"
|
304
|
+
else
|
305
|
+
return "#{@sep_val}#{self.escape(val)}#{@sep_val}"
|
306
|
+
end
|
307
|
+
end
|
308
|
+
|
292
309
|
#Simply and optimal insert multiple rows into a table in a single query. Uses the drivers functionality if supported or inserts each row manually.
|
293
310
|
#
|
294
311
|
#===Examples
|
@@ -362,6 +379,17 @@ class Knj::Db
|
|
362
379
|
end
|
363
380
|
end
|
364
381
|
|
382
|
+
#Checks if a given selector exists. If it does, updates it to match data. If not inserts the row.
|
383
|
+
def upsert(table, selector, data)
|
384
|
+
row = self.select(table, selector, "limit" => 1).fetch
|
385
|
+
|
386
|
+
if row
|
387
|
+
self.update(table, data, row)
|
388
|
+
else
|
389
|
+
self.insert(table, selector.merge(data))
|
390
|
+
end
|
391
|
+
end
|
392
|
+
|
365
393
|
#Makes a select from the given arguments: table-name, where-terms and other arguments as limits and orders. Also takes a block to avoid raping of memory.
|
366
394
|
def select(tablename, arr_terms = nil, args = nil, &block)
|
367
395
|
#Set up vars.
|
data/lib/knj/os.rb
CHANGED
@@ -54,17 +54,18 @@ module Knj::Os
|
|
54
54
|
# print "I like it better now." if Knj::Os.os == "linux"
|
55
55
|
def self.os
|
56
56
|
if ENV["OS"]
|
57
|
-
teststring = ENV["OS"].to_s
|
57
|
+
teststring = ENV["OS"].to_s.downcase
|
58
58
|
elsif RUBY_PLATFORM
|
59
|
-
teststring = RUBY_PLATFORM.to_s
|
59
|
+
teststring = RUBY_PLATFORM.to_s.downcase
|
60
60
|
end
|
61
61
|
|
62
|
-
if teststring.
|
62
|
+
if teststring.include?("windows")
|
63
63
|
return "windows"
|
64
|
-
elsif teststring.
|
64
|
+
elsif teststring.include?("linux")
|
65
65
|
return "linux"
|
66
|
+
elsif teststring.include?("darwin")
|
66
67
|
else
|
67
|
-
raise "Could not figure out OS."
|
68
|
+
raise "Could not figure out OS: '#{teststring}'."
|
68
69
|
end
|
69
70
|
end
|
70
71
|
|
@@ -221,6 +222,11 @@ module Knj::Os
|
|
221
222
|
def self.executed_executable
|
222
223
|
return ENV["rvm_ruby_string"] if !ENV["rvm_ruby_string"].to_s.empty?
|
223
224
|
|
225
|
+
if ENV["MY_RUBY_HOME"]
|
226
|
+
ruby_bin_path = "#{ENV["MY_RUBY_HOME"]}/bin/ruby"
|
227
|
+
return ruby_bin_path if File.exists?(ruby_bin_path)
|
228
|
+
end
|
229
|
+
|
224
230
|
#Try to look the executeable up by command.
|
225
231
|
if self.os == "linux"
|
226
232
|
unix_proc = Knj::Unix_proc.find_self
|
@@ -235,6 +241,8 @@ module Knj::Os
|
|
235
241
|
end
|
236
242
|
end
|
237
243
|
|
244
|
+
puts ENV.to_hash
|
245
|
+
|
238
246
|
raise "Could not figure out the executed executable."
|
239
247
|
end
|
240
248
|
end
|
data/spec/amixer_spec.rb
CHANGED
@@ -2,24 +2,29 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
2
2
|
|
3
3
|
describe "Amixer" do
|
4
4
|
it "should load by using autoload" do
|
5
|
-
|
6
|
-
|
7
|
-
|
5
|
+
if Knj::Os.os == "linux"
|
6
|
+
require "knjrbfw"
|
7
|
+
$amixer = Knj::Amixer.new
|
8
|
+
end
|
8
9
|
end
|
9
10
|
|
10
11
|
it "should register various devices" do
|
11
|
-
|
12
|
+
if Knj::Os.os == "linux"
|
13
|
+
$devices = $amixer.devices
|
14
|
+
end
|
12
15
|
end
|
13
16
|
|
14
17
|
it "should register various mixers and do various operations on them" do
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
18
|
+
if Knj::Os.os == "linux"
|
19
|
+
$devices.each do |name, device|
|
20
|
+
mixers = device.mixers
|
21
|
+
|
22
|
+
if device.active?(:stream => "PLAYBACK")
|
23
|
+
mixers.each do |name, mixer|
|
24
|
+
next if !mixer.volume?
|
25
|
+
mixer.vol_add -5
|
26
|
+
mixer.vol_add 3
|
27
|
+
end
|
23
28
|
end
|
24
29
|
end
|
25
30
|
end
|
data/spec/db_spec.rb
CHANGED
@@ -42,7 +42,9 @@ describe "Db" do
|
|
42
42
|
"test_table" => {
|
43
43
|
"columns" => [
|
44
44
|
{"name" => "id", "type" => "int", "autoincr" => true, "primarykey" => true},
|
45
|
-
{"name" => "name", "type" => "varchar"}
|
45
|
+
{"name" => "name", "type" => "varchar"},
|
46
|
+
{"name" => "age", "type" => "int"},
|
47
|
+
{"name" => "nickname", "type" => "varchar"}
|
46
48
|
],
|
47
49
|
"indexes" => [
|
48
50
|
"name"
|
@@ -98,6 +100,25 @@ describe "Db" do
|
|
98
100
|
raise "Block with should have ran too little: #{block_ran}." if block_ran < rows_count
|
99
101
|
|
100
102
|
|
103
|
+
#Test upserting.
|
104
|
+
data = {:name => "Kasper Johansen"}
|
105
|
+
sel = {:nickname => "kaspernj"}
|
106
|
+
|
107
|
+
table = db.tables[:test_table]
|
108
|
+
table.reload
|
109
|
+
rows_count = table.rows_count
|
110
|
+
|
111
|
+
db.upsert(:test_table, sel, data)
|
112
|
+
|
113
|
+
table.reload
|
114
|
+
table.rows_count.should eql(rows_count + 1)
|
115
|
+
|
116
|
+
db.upsert(:test_table, sel, data)
|
117
|
+
|
118
|
+
table.reload
|
119
|
+
table.rows_count.should eql(rows_count + 1)
|
120
|
+
|
121
|
+
|
101
122
|
#Test dumping.
|
102
123
|
dump = Knj::Db::Dump.new(:db => db, :debug => false)
|
103
124
|
str_io = StringIO.new
|
@@ -159,4 +180,27 @@ describe "Db" do
|
|
159
180
|
#Delete test-database if everything went well.
|
160
181
|
File.unlink(db_path) if File.exists?(db_path)
|
161
182
|
end
|
183
|
+
|
184
|
+
it "should generate proper sql" do
|
185
|
+
require "knj/db"
|
186
|
+
require "knj/os"
|
187
|
+
require "rubygems"
|
188
|
+
require "sqlite3" if !Kernel.const_defined?("SQLite3") and RUBY_ENGINE != "jruby"
|
189
|
+
|
190
|
+
db_path = "#{Knj::Os.tmpdir}/knjrbfw_test_sqlite3.sqlite3"
|
191
|
+
File.unlink(db_path) if File.exists?(db_path)
|
192
|
+
|
193
|
+
db = Knj::Db.new(
|
194
|
+
:type => "sqlite3",
|
195
|
+
:path => db_path,
|
196
|
+
:return_keys => "symbols",
|
197
|
+
:index_append_table_name => true
|
198
|
+
)
|
199
|
+
|
200
|
+
time = Time.new(1985, 6, 17, 10, 30)
|
201
|
+
db.insert(:test, {:date => time}, :return_sql => true).should eql("INSERT INTO `test` (`date`) VALUES ('1985-06-17 10:30:00')")
|
202
|
+
|
203
|
+
date = Date.new(1985, 6, 17)
|
204
|
+
db.insert(:test, {:date => date}, :return_sql => true).should eql("INSERT INTO `test` (`date`) VALUES ('1985-06-17')")
|
205
|
+
end
|
162
206
|
end
|
data/spec/objects_spec.rb
CHANGED
@@ -2,7 +2,12 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
2
2
|
|
3
3
|
describe "Objects" do
|
4
4
|
it "should be able to cache rows" do
|
5
|
-
|
5
|
+
begin
|
6
|
+
require "#{File.dirname(__FILE__)}/../../array_enumerator/lib/array_enumerator"
|
7
|
+
rescue LoadError
|
8
|
+
require "array_enumerator"
|
9
|
+
end
|
10
|
+
|
6
11
|
require "sqlite3" if RUBY_ENGINE != "jruby"
|
7
12
|
|
8
13
|
$db_path = "#{Knj::Os.tmpdir}/knjrbfw_objects_cache_test.sqlite3"
|
data/spec/process_spec.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: knjrbfw
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.104
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-04-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: wref
|
@@ -187,6 +187,22 @@ dependencies:
|
|
187
187
|
- - ! '>='
|
188
188
|
- !ruby/object:Gem::Version
|
189
189
|
version: '0'
|
190
|
+
- !ruby/object:Gem::Dependency
|
191
|
+
name: array_enumerator
|
192
|
+
requirement: !ruby/object:Gem::Requirement
|
193
|
+
none: false
|
194
|
+
requirements:
|
195
|
+
- - ! '>='
|
196
|
+
- !ruby/object:Gem::Version
|
197
|
+
version: '0'
|
198
|
+
type: :development
|
199
|
+
prerelease: false
|
200
|
+
version_requirements: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
202
|
+
requirements:
|
203
|
+
- - ! '>='
|
204
|
+
- !ruby/object:Gem::Version
|
205
|
+
version: '0'
|
190
206
|
description: Including stuff for HTTP, SSH and much more.
|
191
207
|
email: k@spernj.org
|
192
208
|
executables: []
|
@@ -455,7 +471,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
455
471
|
version: '0'
|
456
472
|
segments:
|
457
473
|
- 0
|
458
|
-
hash:
|
474
|
+
hash: -708484530570275600
|
459
475
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
460
476
|
none: false
|
461
477
|
requirements:
|