如何使我现有的 ruby gem 配置可用于我的 rails-api 应用程序?
How to make my existing ruby gem configuration available to my rails-api app?
我有一个 ruby gem 我创建的,我一直在我的 rails-api 应用程序之一中使用。我最近向 gem 添加了一个配置,所以我可以从我的 rails-api 应用程序配置它,它看起来像这样:
# In rails-api app /config/initializers/my_gem.rb
MyGem::MyNamespace.configure do |config|
config.allow_custom_commands = true
end
但是,当我启动 rails 服务器时,出现 NoMethod 错误:
/Users/me/dev/rails/api.abc/config/initializers/my_gem.rb:61:in `<top (required)>': undefined method `configure' for MyGem::MyNamespace:Module (NoMethodError)
from /Users/me/dev/rails/api.mohojo-werks/vendor/bundle/gems/activesupport-5.0.5/lib/active_support/dependencies.rb:287:in `load'
from /Users/me/dev/rails/api.mohojo-werks/vendor/bundle/gems/activesupport-5.0.5/lib/active_support/dependencies.rb:287:in `block in load'
from /Users/me/dev/rails/api.mohojo-werks/vendor/bundle/gems/activesupport-5.0.5/lib/active_support/dependencies.rb:259:in `load_dependency'
etc.
我的所有 gem 测试都顺利通过,所以我不知道我做错了什么。这是我的配置文件:
# /my_gem/configuration.rb
module MyGem
module MyNamespace
class Configuration
attr_accessor :allow_custom_commands
def initialize
reset
end
public
def reset
@allow_custom_commands = false
nil
end
end
end
end
# /my_gem/configure.rb
module MyGem
module MyNamespace
class << self
attr_writer :configuration
end
def self.configuration
@configuration ||= Configuration.new
end
def self.configure
yield(configuration)
end
end
end
我似乎遗漏了以下文件中的一些 'requires'。添加它们之后,一切似乎都运行良好,我的配置块在我的 rails-api 应用程序 /config/initializers/my_gem.rb...
中运行良好
# my_gem.rb
require 'my_gem/configure'
# /my_gem/configure.rb
require_relative 'configuration'
我有一个 ruby gem 我创建的,我一直在我的 rails-api 应用程序之一中使用。我最近向 gem 添加了一个配置,所以我可以从我的 rails-api 应用程序配置它,它看起来像这样:
# In rails-api app /config/initializers/my_gem.rb
MyGem::MyNamespace.configure do |config|
config.allow_custom_commands = true
end
但是,当我启动 rails 服务器时,出现 NoMethod 错误:
/Users/me/dev/rails/api.abc/config/initializers/my_gem.rb:61:in `<top (required)>': undefined method `configure' for MyGem::MyNamespace:Module (NoMethodError)
from /Users/me/dev/rails/api.mohojo-werks/vendor/bundle/gems/activesupport-5.0.5/lib/active_support/dependencies.rb:287:in `load'
from /Users/me/dev/rails/api.mohojo-werks/vendor/bundle/gems/activesupport-5.0.5/lib/active_support/dependencies.rb:287:in `block in load'
from /Users/me/dev/rails/api.mohojo-werks/vendor/bundle/gems/activesupport-5.0.5/lib/active_support/dependencies.rb:259:in `load_dependency'
etc.
我的所有 gem 测试都顺利通过,所以我不知道我做错了什么。这是我的配置文件:
# /my_gem/configuration.rb
module MyGem
module MyNamespace
class Configuration
attr_accessor :allow_custom_commands
def initialize
reset
end
public
def reset
@allow_custom_commands = false
nil
end
end
end
end
# /my_gem/configure.rb
module MyGem
module MyNamespace
class << self
attr_writer :configuration
end
def self.configuration
@configuration ||= Configuration.new
end
def self.configure
yield(configuration)
end
end
end
我似乎遗漏了以下文件中的一些 'requires'。添加它们之后,一切似乎都运行良好,我的配置块在我的 rails-api 应用程序 /config/initializers/my_gem.rb...
中运行良好# my_gem.rb
require 'my_gem/configure'
# /my_gem/configure.rb
require_relative 'configuration'