我有三个文件如下:
database.rb
- 代表数据库log.rb
- 记录数据库中发生的事情main.rb
- 一个接受用户输入并从其他文件中调用函数的驱动程序class Database
def initialize()
@data = Hash.new
@modified_recently = false
end
def build_db
# Reads CSV file into program
end
end
require_relative "./database"
require_relative "./log"
db = Database.new # Create a new database
log = Log.new # Create a new log
db.build_db # Build the database from a file
问题是我需要日志才能访问数据库。但是,我在main.rb
中创建了对象(需要log.rb
,所以我不能从那里要求它)。我完全错了吗?我怎么能:
main
向database
和log
database
命令
log
商店数据-----BEGIN CERTIFICATE REQUEST-----
MIID....
-----END CERTIFICATE REQUEST-----
-----BEGIN RSA PRIVATE KEY-----
MI...
-----END RSA PRIVATE KEY-----
能够了解数据库中发生的事情答案 0 :(得分:1)
如果我正确理解了这个问题,只需将Database
的实例传递给Log
的构造函数:
class Log
def initialize db
@db = db
end
...
end
main.rb
中的:
db = Database.new # Create a new database
log = Log.new db # Create a new log
答案 1 :(得分:0)
如果您希望能够独立于main运行database.rb,例如进行测试,您还可以检查日志是否已由main.rb定义
#database.rb
require_relative "./log" #is only going to be required once
db = Database.new
log = Log.new unless defined? log