我试图完全补偿[重新] hrend上面的代码做什么(我没 写)
module Card #Creates a namespace called Card
MY_PACKAGE = "hello"
end
str1 = "BEGIN #{Card::MY_PACKAGE}.retrieve_card(" #Looks in a namespace called Card for the constant MY_PACKAGE
puts str1 #=> "BEGIN hello.retrieve_card("
my_attrs = ['dog', 'cat', 'squirrel']
arr = my_attrs.map { |a| ":#{a}, " }
p arr #=> [":dog, ", ":cat, ", ":squirrel, "]
str2 = arr.join('')
p str2 #=> ":dog, :cat, :squirrel,"
str3 = ':errormsg); END;'
p str3 #=> ":errormsg); END;"
array_of_strs = [str1, str2, str3]
sql_statement = array_of_strs.join('')
p sql_statement #=> "BEGIN hello.retrieve_card(:dog, :cat, :squirrel, :errormsg); END;"
join(separator = $,)
返回通过将数组的每个元素转换为由给定分隔符分隔的字符串创建的字符串。如果分隔符为零,则使用当前$ ,.如果分隔符和$都是零,则它使用空字符串。
http://www.ruby-doc.org/core-2.2.0/Array.html#method-i-join
什么是在轨道4,5相当于语法?
对我来说,它看起来像一个raw_connection应该能够在这里调用parse(),见线98,107:
:
https://github.com/rsim/oracle-enhanced/blob/8c1335658a864f93fe1e6b22a512d281677ee170/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb
该网页上的类继承自
class OracleEnhancedOCIConnection < OracleEnhancedConnection
...并且OracleEnhancedConnection类具有用于@raw_connection的属性阅读器,请参阅第17行:
https://github.com/rsim/oracle-enhanced/blob/8c1335658a864f93fe1e6b22a512d281677ee170/lib/active_record/connection_adapters/oracle_enhanced_connection.rb
是否由self.connection.raw_connection返回的raw_connection?尝试:
puts self.connection.class
放self.class.connection.raw_connection.class回报:OCI8EnhancedAutoRecover”
的OCI8EnhancedAutoRecover
类定义如下:
https://github.com/rsim/oracle-enhanced/blob/8c1335658a864f93fe1e6b22a512d281677ee170/lib/active_record/connection_adapters/oracle_enhanced_oci_connection.rb
...像这样:
class OCI8EnhancedAutoRecover < DelegateClass(OCI8)
的OCI8EnhancedAutoRecover
类定义了一些方法 - 其中没有一个是解析() - 和代表其他方法调用的OCI8类 - 这就是< DelegateClass(OCI8)
手段。
require "oci8"
...这需要ruby-oci8 gem
:
的OCI8类由提供。创业板在这里定义的OCI8类:
https://github.com/kubo/ruby-oci8/blob/master/lib/oci8/oci8.rb
和在线168它定义了parse()方法:
def parse(sql)
@last_error = nil
parse_internal(sql)
end
所以调用解析()在raw_connection应该工作。
我得到这个“拒绝警告:#连接已弃用,有利于通过类访问它。”当我尝试把self.connection.class – Micheal 2015-01-20 21:33:40
@Micheal,然后:'puts self.class.connection.class' – 7stud 2015-01-20 21:39:10
你是对的。返回给我一个'ActiveRecord :: ConnectionAdapters :: OracleEnhancedAdapter' – Micheal 2015-01-20 21:42:32