名称空间在Ruby中是如何工作的?

名称空间在Ruby中是如何工作的?,ruby,module,architecture,namespaces,organization,Ruby,Module,Architecture,Namespaces,Organization,我使用名称空间来组织代码,但现在我有点怀疑。我有以下代码: module ShopApplication module Models class Product < ::Sequel::Model # Model code end end end 我想在不指定完整路径的情况下使用我的模型。我能否将@products=shopplication::Models::Product.all转换为@products=Product.all?如果是,如何进行?我

我使用名称空间来组织代码,但现在我有点怀疑。我有以下代码:

module ShopApplication
  module Models
    class Product < ::Sequel::Model
      # Model code
    end
  end
end
我想在不指定完整路径的情况下使用我的模型。我能否将
@products=shopplication::Models::Product.all
转换为
@products=Product.all
?如果是,如何进行?我尝试将
include::shopplication::Models
加入
App
类,但没有成功

是您希望在此处使用的内容:

module ShopApplication
  module Models
    class Product < ::Sequel::Model
      # Model code
    end
  end
end

module ShopApplication
  module WebInterface
    class App < ::Sinatra::Base
      include ShopApplication::Models
      get '/' do
        @products = Product.all
      end
    end
  end
end
是您要在此处使用的:

module ShopApplication
  module Models
    class Product < ::Sequel::Model
      # Model code
    end
  end
end

module ShopApplication
  module WebInterface
    class App < ::Sinatra::Base
      include ShopApplication::Models
      get '/' do
        @products = Product.all
      end
    end
  end
end
module ShopApplication
  module Models
    class Product
      def name
        "Product-name"
      end
      def self.all
        ["array", "of", "products"]
      end
    end
  end
end

module ShopApplication
  module WebInterface
    class App
      include ShopApplication::Models
      def instance_meth
        p Product.new.name
      end
      def self.class_meth
        p Product.all
      end
    end
  end
end

ShopApplication::WebInterface::App.new.instance_meth
ShopApplication::WebInterface::App.class_meth