【问题标题】:How to make my existing ruby gem configuration available to my rails-api app?如何使我现有的 ruby​​ gem 配置可用于我的 rails-api 应用程序?
【发布时间】:2017-09-01 22:50:33
【问题描述】:

我创建了一个 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

【问题讨论】:

    标签: ruby-on-rails rubygems rails-api


    【解决方案1】:

    我似乎遗漏了以下文件中的一些“要求”。添加它们后,一切似乎都运行良好,我的配置块在我的 rails-api 应用程序 /config/initializers/my_gem.rb 中运行良好...

    # my_gem.rb
    require 'my_gem/configure'
    
    # /my_gem/configure.rb
    require_relative 'configuration'
    

    【讨论】:

      猜你喜欢
      • 2012-05-13
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-05
      相关资源
      最近更新 更多