【问题标题】:const_missing': uninitialized constant Rack::IpRestrictor (NameError)const_missing':未初始化的常量 Rack::IpRestrictor (NameError)
【发布时间】:2011-08-18 21:42:37
【问题描述】:

为什么会出错?

设置如下:

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

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

/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'

知道为什么 rails 找不到 Rack::IpRestrictor 吗?

谢谢

【问题讨论】:

标签: ruby-on-rails ruby-on-rails-3 rack middleware


【解决方案1】:

您在任何地方都不需要此文件。这就是为什么它找不到常数。 lib 目录中的文件不会在 Rails 3 中自动加载。手动需要此文件。

【讨论】:

    猜你喜欢
    • 2013-01-12
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多