创建可配置的 RubyGems
在 Ruby 开发中,有以下常见的配置模式:
Papago.configure do |config|
config.api_key = ENV['PAPAGO_API_KEY']
end
papago 是一个简单的命令行翻译器。
从语法可以看出,Papago
的 #configure
方法接收一个代码块。
module Papago
def self.configure
yield configuration
end
def self.configuration
end
end
代码中 #configuration
需要返回一个可以用作数据容器的对象。
module Papago
+ class Configuration
+ end
def self.configuration
+ @configuration ||= Configuration.new
end
end
其中,@configuration
作为模块的实例变量,#configuration
始终持有同一个 Configuration
实例。
最后,@configuration
需要响应 api_key
和 api_key=
。
module Papago
class Configuration
attr_accessor :api_key
end
end