创建可配置的 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