baza 0.0.8 → 0.0.9
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 +2 -0
- data/VERSION +1 -1
- data/baza.gemspec +6 -3
- data/include/drivers/sqlite3/sqlite3_columns.rb +1 -1
- data/include/model.rb +12 -0
- data/include/model_handler.rb +88 -123
- data/include/model_handler_sqlhelper.rb +1 -1
- data/include/revision.rb +2 -1
- metadata +49 -33
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.9
|
data/baza.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "baza"
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.9"
|
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-05-16"
|
13
13
|
s.description = "A database abstraction layer, model framework and database framework."
|
14
14
|
s.email = "kj@gfish.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -62,7 +62,7 @@ Gem::Specification.new do |s|
|
|
62
62
|
s.homepage = "http://github.com/kaspernj/baza"
|
63
63
|
s.licenses = ["MIT"]
|
64
64
|
s.require_paths = ["lib"]
|
65
|
-
s.rubygems_version = "1.8.
|
65
|
+
s.rubygems_version = "1.8.23"
|
66
66
|
s.summary = "A database abstraction layer, model framework and database framework."
|
67
67
|
|
68
68
|
if s.respond_to? :specification_version then
|
@@ -73,6 +73,7 @@ Gem::Specification.new do |s|
|
|
73
73
|
s.add_runtime_dependency(%q<wref>, [">= 0"])
|
74
74
|
s.add_runtime_dependency(%q<knjrbfw>, [">= 0"])
|
75
75
|
s.add_runtime_dependency(%q<array_enumerator>, [">= 0"])
|
76
|
+
s.add_runtime_dependency(%q<string-cases>, [">= 0"])
|
76
77
|
s.add_development_dependency(%q<rspec>, ["~> 2.8.0"])
|
77
78
|
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
78
79
|
s.add_development_dependency(%q<bundler>, [">= 1.0.0"])
|
@@ -84,6 +85,7 @@ Gem::Specification.new do |s|
|
|
84
85
|
s.add_dependency(%q<wref>, [">= 0"])
|
85
86
|
s.add_dependency(%q<knjrbfw>, [">= 0"])
|
86
87
|
s.add_dependency(%q<array_enumerator>, [">= 0"])
|
88
|
+
s.add_dependency(%q<string-cases>, [">= 0"])
|
87
89
|
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
88
90
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
89
91
|
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
@@ -96,6 +98,7 @@ Gem::Specification.new do |s|
|
|
96
98
|
s.add_dependency(%q<wref>, [">= 0"])
|
97
99
|
s.add_dependency(%q<knjrbfw>, [">= 0"])
|
98
100
|
s.add_dependency(%q<array_enumerator>, [">= 0"])
|
101
|
+
s.add_dependency(%q<string-cases>, [">= 0"])
|
99
102
|
s.add_dependency(%q<rspec>, ["~> 2.8.0"])
|
100
103
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
101
104
|
s.add_dependency(%q<bundler>, [">= 1.0.0"])
|
@@ -7,7 +7,7 @@ class Baza::Driver::Sqlite3::Columns
|
|
7
7
|
@args = args
|
8
8
|
end
|
9
9
|
|
10
|
-
DATA_SQL_ALLOWED_KEYS = [:name, :type, :maxlength, :autoincr, :primarykey, :null, :default, :default_func, :renames]
|
10
|
+
DATA_SQL_ALLOWED_KEYS = [:name, :type, :maxlength, :autoincr, :primarykey, :null, :default, :default_func, :renames, :after]
|
11
11
|
#Returns SQL for a knjdb-compatible hash.
|
12
12
|
def data_sql(data)
|
13
13
|
data.each do |key, val|
|
data/include/model.rb
CHANGED
@@ -184,6 +184,8 @@ class Baza::Model
|
|
184
184
|
# ]
|
185
185
|
# end
|
186
186
|
def self.has_one(arr)
|
187
|
+
arr = [arr] if arr.is_a?(Symbol)
|
188
|
+
|
187
189
|
arr.each do |val|
|
188
190
|
methodname = nil
|
189
191
|
colname = nil
|
@@ -880,4 +882,14 @@ class Baza::Model
|
|
880
882
|
|
881
883
|
return attrs
|
882
884
|
end
|
885
|
+
|
886
|
+
private
|
887
|
+
|
888
|
+
def str_snake_to_camel(str)
|
889
|
+
|
890
|
+
end
|
891
|
+
|
892
|
+
def str_camel_to_snake(str)
|
893
|
+
|
894
|
+
end
|
883
895
|
end
|
data/include/model_handler.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require "#{File.dirname(__FILE__)}/model_handler_sqlhelper.rb"
|
2
|
+
require "string-cases"
|
2
3
|
|
3
4
|
class Baza::ModelHandler
|
4
5
|
attr_reader :args, :events, :data, :ids_cache, :ids_cache_should
|
@@ -32,7 +33,6 @@ class Baza::ModelHandler
|
|
32
33
|
raise "No class path given." if !@args[:class_path] and (@args[:require] or !@args.key?(:require))
|
33
34
|
|
34
35
|
if args[:require_all]
|
35
|
-
Knj.gem_require(:Php4r, "php4r")
|
36
36
|
loads = []
|
37
37
|
|
38
38
|
Dir.foreach(@args[:class_path]) do |file|
|
@@ -40,7 +40,7 @@ class Baza::ModelHandler
|
|
40
40
|
file_parsed = file
|
41
41
|
file_parsed.gsub!(@args[:class_pre], "") if @args.key?(:class_pre)
|
42
42
|
file_parsed.gsub!(/\.rb$/, "")
|
43
|
-
file_parsed =
|
43
|
+
file_parsed = StringCases.snake_to_camel(file_parsed)
|
44
44
|
|
45
45
|
loads << file_parsed
|
46
46
|
self.requireclass(file_parsed, {:load => false})
|
@@ -198,9 +198,6 @@ class Baza::ModelHandler
|
|
198
198
|
end
|
199
199
|
|
200
200
|
callback["block"].call(*callargs)
|
201
|
-
elsif callback["callback"]
|
202
|
-
require "php4r" if !Kernel.const_defined?(:Php4r)
|
203
|
-
Php4r.call_user_func(callback["callback"], args)
|
204
201
|
else
|
205
202
|
raise "No valid callback given."
|
206
203
|
end
|
@@ -211,6 +208,7 @@ class Baza::ModelHandler
|
|
211
208
|
def requireclass(classname, args = {})
|
212
209
|
classname = classname.to_sym
|
213
210
|
return false if @objects.key?(classname)
|
211
|
+
classname_snake = StringCases.camel_to_snake(classname)
|
214
212
|
|
215
213
|
@lock_require.synchronize do
|
216
214
|
#Maybe the classname got required meanwhile the synchronized wait - check again.
|
@@ -232,8 +230,8 @@ class Baza::ModelHandler
|
|
232
230
|
end
|
233
231
|
|
234
232
|
if doreq
|
235
|
-
filename = "#{@args[:class_path]}/#{@args[:class_pre]}#{
|
236
|
-
filename_req = "#{@args[:class_path]}/#{@args[:class_pre]}#{
|
233
|
+
filename = "#{@args[:class_path]}/#{@args[:class_pre]}#{classname_snake}.rb"
|
234
|
+
filename_req = "#{@args[:class_path]}/#{@args[:class_pre]}#{classname_snake}"
|
237
235
|
raise "Class file could not be found: #{filename}." if !File.exists?(filename)
|
238
236
|
require filename_req
|
239
237
|
end
|
@@ -360,13 +358,7 @@ class Baza::ModelHandler
|
|
360
358
|
end
|
361
359
|
|
362
360
|
#Spawn object.
|
363
|
-
|
364
|
-
obj = @args[:module].const_get(classname).new(data, args)
|
365
|
-
else
|
366
|
-
pass_args = [data]
|
367
|
-
pass_args = pass_args | @args[:extra_args] if @args[:extra_args]
|
368
|
-
obj = @args[:module].const_get(classname).new(*pass_args)
|
369
|
-
end
|
361
|
+
obj = @args[:module].const_get(classname).new(data, args)
|
370
362
|
|
371
363
|
#Save object in cache.
|
372
364
|
case @args[:cache]
|
@@ -414,6 +406,13 @@ class Baza::ModelHandler
|
|
414
406
|
return false
|
415
407
|
end
|
416
408
|
|
409
|
+
#Searches for an object with the given data. If not found it creates it. Returns the found or created object in the end.
|
410
|
+
def get_or_add(classname, data, args = nil)
|
411
|
+
obj = self.get_by(classname, data)
|
412
|
+
obj = self.add(classname, data) if !obj
|
413
|
+
return obj
|
414
|
+
end
|
415
|
+
|
417
416
|
def get_try(obj, col_name, obj_name = nil)
|
418
417
|
if !obj_name
|
419
418
|
if match = col_name.to_s.match(/^(.+)_id$/)
|
@@ -445,14 +444,7 @@ class Baza::ModelHandler
|
|
445
444
|
classob = @args[:module].const_get(classname)
|
446
445
|
|
447
446
|
raise "list-function has not been implemented for '#{classname}'." if !classob.respond_to?("list")
|
448
|
-
|
449
|
-
if @args[:datarow] or @args[:custom]
|
450
|
-
ret = classob.list(Knj::Hash_methods.new(:args => args, :ob => self, :db => @args[:db]), &block)
|
451
|
-
else
|
452
|
-
realargs = [args]
|
453
|
-
realargs = realargs | @args[:extra_args] if @args[:extra_args]
|
454
|
-
ret = classob.list(*realargs, &block)
|
455
|
-
end
|
447
|
+
ret = classob.list(Knj::Hash_methods.new(:args => args, :ob => self, :db => @args[:db]), &block)
|
456
448
|
|
457
449
|
#If 'ret' is an array and a block is given then the list-method didnt return blocks. We emulate it instead with the following code.
|
458
450
|
if block and ret.is_a?(Array)
|
@@ -655,7 +647,13 @@ class Baza::ModelHandler
|
|
655
647
|
classname = classname.to_sym
|
656
648
|
self.requireclass(classname)
|
657
649
|
|
658
|
-
if @args[:
|
650
|
+
if @args[:custom]
|
651
|
+
classobj = @args[:module].const_get(classname)
|
652
|
+
retob = classobj.add(Knj::Hash_methods.new(
|
653
|
+
:ob => self,
|
654
|
+
:data => data
|
655
|
+
))
|
656
|
+
else
|
659
657
|
classobj = @args[:module].const_get(classname)
|
660
658
|
|
661
659
|
#Run the class 'add'-method to check various data.
|
@@ -686,16 +684,6 @@ class Baza::ModelHandler
|
|
686
684
|
|
687
685
|
#Spawn the object.
|
688
686
|
retob = self.get(classname, ins_id, {:skip_reload => true})
|
689
|
-
elsif @args[:custom]
|
690
|
-
classobj = @args[:module].const_get(classname)
|
691
|
-
retob = classobj.add(Knj::Hash_methods.new(
|
692
|
-
:ob => self,
|
693
|
-
:data => data
|
694
|
-
))
|
695
|
-
else
|
696
|
-
args = [data]
|
697
|
-
args = args | @args[:extra_args] if @args[:extra_args]
|
698
|
-
retob = @args[:module].const_get(classname).add(*args)
|
699
687
|
end
|
700
688
|
|
701
689
|
self.call("object" => retob, "signal" => "add")
|
@@ -708,31 +696,22 @@ class Baza::ModelHandler
|
|
708
696
|
#===Examples
|
709
697
|
# ob.adds(:User, [{:username => "User 1"}, {:username => "User 2"})
|
710
698
|
def adds(classname, datas)
|
711
|
-
if
|
699
|
+
if @args[:module].const_get(classname).respond_to?(:add)
|
712
700
|
datas.each do |data|
|
713
|
-
@args[:module].const_get(classname).add(
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
datas.each do |data|
|
719
|
-
@args[:module].const_get(classname).add(Knj::Hash_methods.new(
|
720
|
-
:ob => self,
|
721
|
-
:db => self.db,
|
722
|
-
:data => data
|
723
|
-
))
|
724
|
-
end
|
701
|
+
@args[:module].const_get(classname).add(Knj::Hash_methods.new(
|
702
|
+
:ob => self,
|
703
|
+
:db => self.db,
|
704
|
+
:data => data
|
705
|
+
))
|
725
706
|
end
|
726
|
-
|
727
|
-
db.insert_multi(classname, datas)
|
728
707
|
end
|
729
708
|
|
709
|
+
db.insert_multi(classname, datas)
|
730
710
|
self.cache_ids(classname)
|
731
711
|
end
|
732
712
|
|
733
713
|
#Calls a static method on a class. Passes the d-variable which contains the Objects-object, database-reference and more...
|
734
714
|
def static(class_name, method_name, *args, &block)
|
735
|
-
raise "Only available with datarow enabled." if !@args[:datarow] and !@args[:custom]
|
736
715
|
class_name = class_name
|
737
716
|
method_name = method_name
|
738
717
|
|
@@ -742,13 +721,7 @@ class Baza::ModelHandler
|
|
742
721
|
#Sometimes this raises the exception but actually responds to the class? Therefore commented out. - knj
|
743
722
|
#raise "The class '#{class_obj.name}' has no such method: '#{method_name}' (#{class_obj.methods.sort.join(", ")})." if !class_obj.respond_to?(method_name)
|
744
723
|
|
745
|
-
pass_args = []
|
746
|
-
|
747
|
-
if @args[:datarow]
|
748
|
-
pass_args << Knj::Hash_methods.new(:ob => self, :db => self.db)
|
749
|
-
else
|
750
|
-
pass_args << Knj::Hash_methods.new(:ob => self)
|
751
|
-
end
|
724
|
+
pass_args = [Knj::Hash_methods.new(:ob => self, :db => self.db)]
|
752
725
|
|
753
726
|
args.each do |arg|
|
754
727
|
pass_args << arg
|
@@ -805,52 +778,50 @@ class Baza::ModelHandler
|
|
805
778
|
obj_id = object.id
|
806
779
|
object.delete if object.respond_to?(:delete)
|
807
780
|
|
808
|
-
|
809
|
-
|
810
|
-
|
811
|
-
|
812
|
-
self.
|
813
|
-
self.delete(obj_del, args)
|
814
|
-
end
|
815
|
-
end
|
816
|
-
end
|
817
|
-
|
818
|
-
#If depend is set by 'has_many'-method, check if any objects exists and raise error if so.
|
819
|
-
if dep_datas = object.class.depending_data
|
820
|
-
dep_datas.each do |dep_data|
|
821
|
-
if obj = self.get_by(dep_data[:classname], {dep_data[:colname].to_s => object.id})
|
822
|
-
raise "Cannot delete <#{object.class.name}:#{object.id}> because <#{obj.class.name}:#{obj.id}> depends on it."
|
823
|
-
end
|
781
|
+
#If autodelete is set by 'has_many'-method, go through it and delete the various objects first.
|
782
|
+
if autodelete_data = object.class.autodelete_data
|
783
|
+
autodelete_data.each do |adel_data|
|
784
|
+
self.list(adel_data[:classname], {adel_data[:colname].to_s => object.id}) do |obj_del|
|
785
|
+
self.delete(obj_del, args)
|
824
786
|
end
|
825
787
|
end
|
826
|
-
|
827
|
-
|
828
|
-
|
829
|
-
|
830
|
-
|
831
|
-
|
832
|
-
|
788
|
+
end
|
789
|
+
|
790
|
+
#If depend is set by 'has_many'-method, check if any objects exists and raise error if so.
|
791
|
+
if dep_datas = object.class.depending_data
|
792
|
+
dep_datas.each do |dep_data|
|
793
|
+
if obj = self.get_by(dep_data[:classname], {dep_data[:colname].to_s => object.id})
|
794
|
+
raise "Cannot delete <#{object.class.name}:#{object.id}> because <#{obj.class.name}:#{obj.id}> depends on it."
|
833
795
|
end
|
834
796
|
end
|
835
|
-
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
|
840
|
-
|
841
|
-
|
797
|
+
end
|
798
|
+
|
799
|
+
#If autozero is set by 'has_many'-method, check if any objects exists and set the ID to zero.
|
800
|
+
if autozero_datas = object.class.autozero_data
|
801
|
+
autozero_datas.each do |zero_data|
|
802
|
+
self.list(zero_data[:classname], {zero_data[:colname].to_s => object.id}) do |obj_zero|
|
803
|
+
obj_zero[zero_data[:colname].to_sym] = 0
|
842
804
|
end
|
843
805
|
end
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
|
848
|
-
|
849
|
-
|
850
|
-
|
806
|
+
end
|
807
|
+
|
808
|
+
#Delete any translations that has been set on the object by 'has_translation'-method.
|
809
|
+
if object.class.translations
|
810
|
+
begin
|
811
|
+
_hb.trans_del(object)
|
812
|
+
rescue NameError
|
813
|
+
_kas.trans_del(object)
|
851
814
|
end
|
852
815
|
end
|
853
816
|
|
817
|
+
|
818
|
+
#If a buffer is given in arguments, then use that to delete the object.
|
819
|
+
if args and buffer = args[:db_buffer]
|
820
|
+
buffer.delete(object.table, {:id => obj_id})
|
821
|
+
else
|
822
|
+
@args[:db].delete(object.table, {:id => obj_id})
|
823
|
+
end
|
824
|
+
|
854
825
|
@ids_cache[classname].delete(obj_id.to_i) if @ids_cache_should.key?(classname)
|
855
826
|
self.call("object" => object, "signal" => "delete")
|
856
827
|
object.destroy
|
@@ -859,38 +830,32 @@ class Baza::ModelHandler
|
|
859
830
|
|
860
831
|
#Deletes several objects as one. If running datarow-mode it checks all objects before it starts to actually delete them. Its faster than deleting every single object by itself...
|
861
832
|
def deletes(objs)
|
862
|
-
|
833
|
+
tables = {}
|
834
|
+
|
835
|
+
begin
|
863
836
|
objs.each do |obj|
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
|
868
|
-
|
869
|
-
begin
|
870
|
-
objs.each do |obj|
|
871
|
-
next if obj.deleted?
|
872
|
-
tablen = obj.table
|
873
|
-
|
874
|
-
if !tables.key?(tablen)
|
875
|
-
tables[tablen] = []
|
876
|
-
end
|
877
|
-
|
878
|
-
tables[tablen] << obj.id
|
879
|
-
obj.delete if obj.respond_to?(:delete)
|
880
|
-
|
881
|
-
#Remove from ID-cache.
|
882
|
-
classname = obj.class.classname.to_sym
|
883
|
-
@ids_cache[classname].delete(obj.id.to_i) if @ids_cache_should.key?(classname)
|
884
|
-
|
885
|
-
#Unset any data on the object, so it seems deleted.
|
886
|
-
obj.destroy
|
837
|
+
next if obj.deleted?
|
838
|
+
tablen = obj.table
|
839
|
+
|
840
|
+
if !tables.key?(tablen)
|
841
|
+
tables[tablen] = []
|
887
842
|
end
|
888
|
-
|
889
|
-
|
890
|
-
|
891
|
-
|
892
|
-
|
893
|
-
|
843
|
+
|
844
|
+
tables[tablen] << obj.id
|
845
|
+
obj.delete if obj.respond_to?(:delete)
|
846
|
+
|
847
|
+
#Remove from ID-cache.
|
848
|
+
classname = obj.class.classname.to_sym
|
849
|
+
@ids_cache[classname].delete(obj.id.to_i) if @ids_cache_should.key?(classname)
|
850
|
+
|
851
|
+
#Unset any data on the object, so it seems deleted.
|
852
|
+
obj.destroy
|
853
|
+
end
|
854
|
+
ensure
|
855
|
+
#An exception may occur, and we should make sure, that objects that has gotten 'delete' called also are deleted from their tables.
|
856
|
+
tables.each do |table, ids|
|
857
|
+
ids.each_slice(1000) do |ids_slice|
|
858
|
+
@args[:db].delete(table, {:id => ids_slice})
|
894
859
|
end
|
895
860
|
end
|
896
861
|
end
|
@@ -219,7 +219,7 @@ class Baza::ModelHandler
|
|
219
219
|
|
220
220
|
sql_where << " AND #{table}`#{db.esc_col(key)}` = '#{db.esc(realval)}'"
|
221
221
|
found = true
|
222
|
-
elsif args[:cols].key?(key)
|
222
|
+
elsif args[:cols].key?(key.to_s)
|
223
223
|
if val.is_a?(Array)
|
224
224
|
if val.empty? and db.opts[:type].to_s == "mysql"
|
225
225
|
sql_where << " AND false"
|
data/include/revision.rb
CHANGED
@@ -42,6 +42,7 @@ class Baza::Revision
|
|
42
42
|
|
43
43
|
schema = args[:schema]
|
44
44
|
db = args[:db]
|
45
|
+
raise "No 'db' was given." if !db
|
45
46
|
|
46
47
|
schema.each do |key, val|
|
47
48
|
raise "Invalid key for schema: '#{key}' (#{key.class.name})." unless INIT_DB_SCHEMA_ALLOWED_ARGS.include?(key)
|
@@ -241,7 +242,7 @@ class Baza::Revision
|
|
241
242
|
|
242
243
|
if table_data[:indexes]
|
243
244
|
table_data[:indexes].each do |index_data|
|
244
|
-
if index_data.is_a?(String)
|
245
|
+
if index_data.is_a?(String) or index_data.is_a?(Symbol)
|
245
246
|
index_data = {:name => index_data, :columns => [index_data]}
|
246
247
|
end
|
247
248
|
|
metadata
CHANGED
@@ -1,171 +1,187 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: baza
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.8
|
5
4
|
prerelease:
|
5
|
+
version: 0.0.9
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Kasper Johansen
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-05-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
15
|
+
version_requirements: !ruby/object:Gem::Requirement
|
17
16
|
none: false
|
18
17
|
requirements:
|
19
18
|
- - ! '>='
|
20
19
|
- !ruby/object:Gem::Version
|
21
20
|
version: '0'
|
21
|
+
name: datet
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
|
24
|
+
requirement: !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
+
version_requirements: !ruby/object:Gem::Requirement
|
33
32
|
none: false
|
34
33
|
requirements:
|
35
34
|
- - ! '>='
|
36
35
|
- !ruby/object:Gem::Version
|
37
36
|
version: '0'
|
37
|
+
name: wref
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
|
-
|
40
|
+
requirement: !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
43
|
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
|
-
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
47
|
+
version_requirements: !ruby/object:Gem::Requirement
|
49
48
|
none: false
|
50
49
|
requirements:
|
51
50
|
- - ! '>='
|
52
51
|
- !ruby/object:Gem::Version
|
53
52
|
version: '0'
|
53
|
+
name: knjrbfw
|
54
54
|
type: :runtime
|
55
55
|
prerelease: false
|
56
|
-
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
57
57
|
none: false
|
58
58
|
requirements:
|
59
59
|
- - ! '>='
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
64
|
+
none: false
|
65
|
+
requirements:
|
66
|
+
- - ! '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
63
69
|
name: array_enumerator
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
64
72
|
requirement: !ruby/object:Gem::Requirement
|
65
73
|
none: false
|
66
74
|
requirements:
|
67
75
|
- - ! '>='
|
68
76
|
- !ruby/object:Gem::Version
|
69
77
|
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
none: false
|
81
|
+
requirements:
|
82
|
+
- - ! '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
name: string-cases
|
70
86
|
type: :runtime
|
71
87
|
prerelease: false
|
72
|
-
|
88
|
+
requirement: !ruby/object:Gem::Requirement
|
73
89
|
none: false
|
74
90
|
requirements:
|
75
91
|
- - ! '>='
|
76
92
|
- !ruby/object:Gem::Version
|
77
93
|
version: '0'
|
78
94
|
- !ruby/object:Gem::Dependency
|
79
|
-
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
95
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
96
|
none: false
|
82
97
|
requirements:
|
83
98
|
- - ~>
|
84
99
|
- !ruby/object:Gem::Version
|
85
100
|
version: 2.8.0
|
101
|
+
name: rspec
|
86
102
|
type: :development
|
87
103
|
prerelease: false
|
88
|
-
|
104
|
+
requirement: !ruby/object:Gem::Requirement
|
89
105
|
none: false
|
90
106
|
requirements:
|
91
107
|
- - ~>
|
92
108
|
- !ruby/object:Gem::Version
|
93
109
|
version: 2.8.0
|
94
110
|
- !ruby/object:Gem::Dependency
|
95
|
-
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
111
|
+
version_requirements: !ruby/object:Gem::Requirement
|
97
112
|
none: false
|
98
113
|
requirements:
|
99
114
|
- - ~>
|
100
115
|
- !ruby/object:Gem::Version
|
101
116
|
version: '3.12'
|
117
|
+
name: rdoc
|
102
118
|
type: :development
|
103
119
|
prerelease: false
|
104
|
-
|
120
|
+
requirement: !ruby/object:Gem::Requirement
|
105
121
|
none: false
|
106
122
|
requirements:
|
107
123
|
- - ~>
|
108
124
|
- !ruby/object:Gem::Version
|
109
125
|
version: '3.12'
|
110
126
|
- !ruby/object:Gem::Dependency
|
111
|
-
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
127
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
128
|
none: false
|
114
129
|
requirements:
|
115
130
|
- - ! '>='
|
116
131
|
- !ruby/object:Gem::Version
|
117
132
|
version: 1.0.0
|
133
|
+
name: bundler
|
118
134
|
type: :development
|
119
135
|
prerelease: false
|
120
|
-
|
136
|
+
requirement: !ruby/object:Gem::Requirement
|
121
137
|
none: false
|
122
138
|
requirements:
|
123
139
|
- - ! '>='
|
124
140
|
- !ruby/object:Gem::Version
|
125
141
|
version: 1.0.0
|
126
142
|
- !ruby/object:Gem::Dependency
|
127
|
-
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
143
|
+
version_requirements: !ruby/object:Gem::Requirement
|
129
144
|
none: false
|
130
145
|
requirements:
|
131
146
|
- - ~>
|
132
147
|
- !ruby/object:Gem::Version
|
133
148
|
version: 1.8.4
|
149
|
+
name: jeweler
|
134
150
|
type: :development
|
135
151
|
prerelease: false
|
136
|
-
|
152
|
+
requirement: !ruby/object:Gem::Requirement
|
137
153
|
none: false
|
138
154
|
requirements:
|
139
155
|
- - ~>
|
140
156
|
- !ruby/object:Gem::Version
|
141
157
|
version: 1.8.4
|
142
158
|
- !ruby/object:Gem::Dependency
|
143
|
-
|
144
|
-
requirement: !ruby/object:Gem::Requirement
|
159
|
+
version_requirements: !ruby/object:Gem::Requirement
|
145
160
|
none: false
|
146
161
|
requirements:
|
147
162
|
- - ! '>='
|
148
163
|
- !ruby/object:Gem::Version
|
149
164
|
version: '0'
|
165
|
+
name: sqlite3
|
150
166
|
type: :development
|
151
167
|
prerelease: false
|
152
|
-
|
168
|
+
requirement: !ruby/object:Gem::Requirement
|
153
169
|
none: false
|
154
170
|
requirements:
|
155
171
|
- - ! '>='
|
156
172
|
- !ruby/object:Gem::Version
|
157
173
|
version: '0'
|
158
174
|
- !ruby/object:Gem::Dependency
|
159
|
-
|
160
|
-
requirement: !ruby/object:Gem::Requirement
|
175
|
+
version_requirements: !ruby/object:Gem::Requirement
|
161
176
|
none: false
|
162
177
|
requirements:
|
163
178
|
- - ! '>='
|
164
179
|
- !ruby/object:Gem::Version
|
165
180
|
version: '0'
|
181
|
+
name: mysql2
|
166
182
|
type: :development
|
167
183
|
prerelease: false
|
168
|
-
|
184
|
+
requirement: !ruby/object:Gem::Requirement
|
169
185
|
none: false
|
170
186
|
requirements:
|
171
187
|
- - ! '>='
|
@@ -232,10 +248,10 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
232
248
|
requirements:
|
233
249
|
- - ! '>='
|
234
250
|
- !ruby/object:Gem::Version
|
235
|
-
version: '0'
|
236
251
|
segments:
|
237
252
|
- 0
|
238
|
-
hash:
|
253
|
+
hash: -33240531491757229
|
254
|
+
version: '0'
|
239
255
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
240
256
|
none: false
|
241
257
|
requirements:
|
@@ -244,7 +260,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
244
260
|
version: '0'
|
245
261
|
requirements: []
|
246
262
|
rubyforge_project:
|
247
|
-
rubygems_version: 1.8.
|
263
|
+
rubygems_version: 1.8.23
|
248
264
|
signing_key:
|
249
265
|
specification_version: 3
|
250
266
|
summary: A database abstraction layer, model framework and database framework.
|