简体   繁体   English

const_missing':未初始化的常量Rack :: IpRestrictor(NameError)

[英]const_missing': uninitialized constant Rack::IpRestrictor (NameError)

Why the error? 为什么会出错?

Here's the setup: 设置如下:

config/initializers/rack_ip_restrictor.rb config / initializers / rack_ip_restrictor.rb

Rack::IpRestrictor.configure do
  respond_with [403, {'Content-Type' => 'text/html'}, '']

  ips_for :test do
    add '127.0.0.1'
    add '127.0.0.2/8'
  end

  restrict /^\/admin/, '/admin', :only => :test
end

config/application.rb config / application.rb

  class Application < Rails::Application
    ...
    config.middleware.use Rack::IpRestrictor.middleware
    ...
  end

/lib/rack_ip_restrictor.rb /lib/rack_ip_restrictor.rb

require 'ipaddr'
require 'active_support/core_ext/array/extract_options'

# namespace Rack
module Rack
  # namespace IpRestrictor
  module IpRestrictor
    class << self
      attr_reader :config

      # @see Config#initialize
      def configure(&block)
        @config = IpRestrictor::Config.new
        @config.instance_eval &block
      end

      # Rack middleware
      # @return [Middleware] The configured plug & play Rack middleware
      def middleware
        IpRestrictor::Middleware
      end
    end
  end
end

require 'rack_ip_restrictor/ip_group'
require 'rack_ip_restrictor/middleware'
require 'rack_ip_restrictor/config'
require 'rack_ip_restrictor/restriction'

Any idea why rails can't find Rack::IpRestrictor ? 知道为什么Rails找不到Rack :: IpRestrictor吗?

Thanks 谢谢

You're not requiring this file anywhere. 您在任何地方都不需要此文件。 That is why it cannot find the constant. 这就是为什么它找不到常量。 Files in the lib directory are not automatically loaded in Rails 3. Require this file manually. lib目录中的文件不会自动加载到Rails 3中。手动需要此文件。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 `const_missing': 未初始化的常量 (NameError) - 需要 - `const_missing': uninitialized constant (NameError) - Require `const_missing':未初始化的常量(NameError) - `const_missing': uninitialized constant (NameError) 覆盖 const_missing 在非开发环境中返回 `NameError uninitialized constant` - Overriding const_missing returns `NameError uninitialized constant` in non-dev environments 未初始化的常量Rack :: Massive(NameError) - uninitialized constant Rack::Massive (NameError) Rails 6,Heroku:NameError:未初始化的常量机架::Cors - Rails 6, Heroku: NameError: uninitialized constant Rack::Cors const_get': 未初始化的常量 AdminUser (NameError) - const_get': uninitialized constant AdminUser (NameError) Heroku未初始化的常量Rails:Initializer(NameError)(noWWW机架中间件) - Heroku uninitialized constant Rails:Initializer (NameError) (noWWW Rack Middleware) 在Rails 3上安装和运行Capybara(未初始化的常量Object :: Rack(NameError)) - Installing and running Capybara on Rails 3 (uninitialized constant Object::Rack (NameError)) 当引用失败Object.const_defined?的常量时,它不会调用const_missing - When referencing a constant that fails Object.const_defined?, it doesn't invoke const_missing `load_missing_constant&#39;:未初始化的常量AuthenticatedTestHelper(NameError) - `load_missing_constant': uninitialized constant AuthenticatedTestHelper (NameError)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM