gpt4 book ai didi

ruby-on-rails - Ruby on Rails : Configure API in initializer in development

转载 作者:行者123 更新时间:2023-12-04 08:55:12 25 4
gpt4 key购买 nike

我有一个 Ruby on Rails 应用程序,其 API 位于 lib . lib 中的文件是自动加载的,API 是在初始化程序中配置的。

# lib/my_api.rb
module MyApi
extend Configuration
end

# lib/my_api/configuration.rb
module MyApi
module Configuration
attr_accessor :my_setting
def configure
yield self
end
end
end

# config/initializers/my_api.rb
MyApi.configure do |config|
config.my_setting = 'foo'
end

这在生产中有效,但在开发中,API 会在服务器启动时进行配置。在我更改一些代码后,配置丢失并且出现错误,因为设置为 nil :
irb(main):001:0> MyApi.my_setting
=> "foo"
irb(main):002:0> reload!
Reloading...
=> true
irb(main):003:0> MyApi.my_setting
=> nil

我的猜测是,在开发中,类被重新加载,但初始化器没有,这意味着它只在启动服务器后被配置一次。

现在我正在复制我的配置 lib/my_api.rb ,但这非常hacky。

这个问题的干净解决方案是什么?

最佳答案

module MyApi
module Configuration
mattr_accessor :my_setting
def configure
yield self
end
end
end

mattr_accessor 是用于创建模块级访问器的 ActiveSupport 宏。

关于ruby-on-rails - Ruby on Rails : Configure API in initializer in development,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31514692/

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