gpt4 book ai didi

ruby - 编写 gem 时设置配置设置

转载 作者:数据小太阳 更新时间:2023-10-29 06:38:02 25 4
gpt4 key购买 nike

我正在编写一个 gem,我想在有和没有 Rails 环境的情况下工作。

我有一个 Configuration 类来允许配置 gem:

module NameChecker
class Configuration
attr_accessor :api_key, :log_level

def initialize
self.api_key = nil
self.log_level = 'info'
end
end

class << self
attr_accessor :configuration
end

def self.configure
self.configuration ||= Configuration.new
yield(configuration) if block_given?
end
end

现在可以这样使用了:

NameChecker.configure do |config|
config.api_key = 'dfskljkf'
end

但是,我似乎无法通过 gem 中的其他类访问我的配置变量。例如,当我像这样在 spec_helper.rb 中配置 gem 时:

# spec/spec_helper.rb
require "name_checker"

NameChecker.configure do |config|
config.api_key = 'dfskljkf'
end

并从我的代码中引用配置:

# lib/name_checker/net_checker.rb
module NameChecker
class NetChecker
p NameChecker.configuration.api_key
end
end

我得到一个未定义的方法错误:

`<class:NetChecker>': undefined method `api_key' for nil:NilClass (NoMethodError)

我的代码有什么问题?

最佳答案

尝试重构为:

def self.configuration
@configuration ||= Configuration.new
end

def self.configure
yield(configuration) if block_given?
end

关于ruby - 编写 gem 时设置配置设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10584638/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com