lafcadio 0.9.3 → 0.9.4
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/lib/lafcadio.rb +1 -1
- data/lib/lafcadio.rb~ +3 -3
- data/lib/lafcadio/domain.rb +0 -1
- data/lib/lafcadio/domain.rb~ +3 -1
- data/lib/lafcadio/objectStore.rb +10 -7
- data/lib/lafcadio/objectStore.rb~ +10 -2
- metadata +6 -5
data/lib/lafcadio.rb
CHANGED
data/lib/lafcadio.rb~
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
# Lafcadio is an object-relational mapping library for Ruby
|
2
|
-
# design has a few aspects in mind:
|
1
|
+
# Lafcadio is an object-relational mapping library for Ruby. It currently
|
2
|
+
# supports MySQL and PostgreSQL. Its design has a few aspects in mind:
|
3
3
|
# * The importance of unit-testing. Lafcadio includes a MockObjectStore which
|
4
4
|
# can take the place of the ObjectStore for unit tests, so you can test
|
5
5
|
# complex database-driven logic. Committing domain objects, running queries,
|
@@ -16,7 +16,7 @@
|
|
16
16
|
# http://lafcadio.rubyforge.org/tutorial.html.
|
17
17
|
|
18
18
|
module Lafcadio
|
19
|
-
Version = "0.9.
|
19
|
+
Version = "0.9.3"
|
20
20
|
|
21
21
|
require 'lafcadio/depend'
|
22
22
|
require 'lafcadio/domain'
|
data/lib/lafcadio/domain.rb
CHANGED
data/lib/lafcadio/domain.rb~
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'extensions/module'
|
2
2
|
require 'lafcadio/objectField'
|
3
3
|
require 'lafcadio/util'
|
4
|
+
require 'monitor'
|
4
5
|
require 'rexml/document'
|
5
6
|
|
6
7
|
module Lafcadio
|
@@ -277,6 +278,7 @@ module Lafcadio
|
|
277
278
|
# different levels.
|
278
279
|
class DomainObject
|
279
280
|
@@subclass_records = Hash.new do |h, k| h[k] = SubclassRecord.new( k ); end
|
281
|
+
@@subclass_records.extend MonitorMixin
|
280
282
|
|
281
283
|
include DomainComparable
|
282
284
|
|
@@ -603,7 +605,7 @@ module Lafcadio
|
|
603
605
|
end
|
604
606
|
|
605
607
|
def self.subclass_record # :nodoc:
|
606
|
-
@@subclass_records[self]
|
608
|
+
@@subclass_records.synchronize { @@subclass_records[self] }
|
607
609
|
end
|
608
610
|
|
609
611
|
def self.subclasses #:nodoc:
|
data/lib/lafcadio/objectStore.rb
CHANGED
@@ -562,6 +562,7 @@ module Lafcadio
|
|
562
562
|
db_object
|
563
563
|
)
|
564
564
|
statements_and_binds.each do |sql, binds|
|
565
|
+
maybe_log sql
|
565
566
|
@db_conn.do( sql, *binds )
|
566
567
|
end
|
567
568
|
if statements_and_binds[0].first =~ /insert/
|
@@ -596,13 +597,15 @@ module Lafcadio
|
|
596
597
|
config = LafcadioConfig.new
|
597
598
|
if config['logSql'] == 'y'
|
598
599
|
sqllog = Log4r::Logger['sql'] || Log4r::Logger.new( 'sql' )
|
599
|
-
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
600
|
+
if sqllog.outputters.empty?
|
601
|
+
filename = File.join(
|
602
|
+
config['logdir'], config['sqlLogFile'] || 'sql'
|
603
|
+
)
|
604
|
+
outputter = Log4r::FileOutputter.new(
|
605
|
+
'outputter', { :filename => filename }
|
606
|
+
)
|
607
|
+
sqllog.outputters = outputter
|
608
|
+
end
|
606
609
|
sqllog.info sql
|
607
610
|
end
|
608
611
|
end
|
@@ -575,7 +575,15 @@ module Lafcadio
|
|
575
575
|
def get_last_pk_id_inserted( domain_class )
|
576
576
|
pair = self.class.last_inserted_pk_id_pair( domain_class )
|
577
577
|
sql = 'select ' + pair.first
|
578
|
-
|
578
|
+
begin
|
579
|
+
select_all( sql ).first[pair.last].to_i
|
580
|
+
rescue RuntimeError
|
581
|
+
error_msg =
|
582
|
+
"The field \"" + domain_class.sql_primary_key_name +
|
583
|
+
"\" can\'t be found in the table \"" +
|
584
|
+
domain_class.table_name + "\"."
|
585
|
+
raise FieldMatchError, error_msg, caller
|
586
|
+
end
|
579
587
|
end
|
580
588
|
|
581
589
|
def group_query( query )
|
@@ -610,7 +618,7 @@ module Lafcadio
|
|
610
618
|
|
611
619
|
def select_dobjs(query)
|
612
620
|
domain_class = query.domain_class
|
613
|
-
select_all( query.to_sql ).collect { |row_hash|
|
621
|
+
select_all( query.to_sql( ObjectStore.db_type ) ).collect { |row_hash|
|
614
622
|
dobj = domain_class.new(
|
615
623
|
SqlToRubyValues.new( domain_class, row_hash )
|
616
624
|
)
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
|
|
3
3
|
specification_version: 1
|
4
4
|
name: lafcadio
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.9.
|
7
|
-
date: 2006-
|
6
|
+
version: 0.9.4
|
7
|
+
date: 2006-05-01 00:00:00 -04:00
|
8
8
|
summary: Lafcadio is an object-relational mapping layer
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -15,7 +15,7 @@ description: Lafcadio is an object-relational mapping layer for Ruby. It lets yo
|
|
15
15
|
autorequire: lafcadio
|
16
16
|
default_executable:
|
17
17
|
bindir: bin
|
18
|
-
has_rdoc:
|
18
|
+
has_rdoc: true
|
19
19
|
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
20
|
requirements:
|
21
21
|
- - ">"
|
@@ -52,8 +52,9 @@ files:
|
|
52
52
|
- lib/lafcadio/test/testconfig.dat
|
53
53
|
test_files: []
|
54
54
|
|
55
|
-
rdoc_options:
|
56
|
-
|
55
|
+
rdoc_options:
|
56
|
+
- --main
|
57
|
+
- lib/lafcadio.rb
|
57
58
|
extra_rdoc_files: []
|
58
59
|
|
59
60
|
executables:
|