簡體   English   中英

組織寶石的結構

[英]Organize a structure of gem

我寫的寶石,它是除了faker寶石(與像稅和增值稅et.c.俄語功能)

因此,我遇到了麻煩:每段代碼都很大,因此我需要將其拆分為邏輯部分。

IE瀏覽器,我有Inn功能被稱為Faker::Russian.inn()

所以,我寫

Dir['faker/russian/*.rb'].each { |file| require file }

module Faker
  class Russian
    extend Inn
  end
end

另外,我有(在faker/russian/inn.rb )(這是必需的)

module Inn
  def inn ; puts 'inn goes here' ; end
end

但是我有一個錯誤: lib/faker/russian.rb:5:in <class:Russian>': uninitialized constant Faker::Russian::Inn (NameError)

如何避免此錯誤並成功包含代碼並自動extend所有連接的模塊?

選項1是在擴展時引用頂級名稱空間

extend ::Inn

選項2是使用正確的名稱空間定義Inn

module Faker
  module Russian
    module Inn
      def inn; end
    end
  end
end

在gem選項2中,最好讓所有模塊在該gem的頂層模塊下都有名稱空間。 想象一下,如果您使用選項1並在應用程序中有一個Inn模塊而不是gem,那么您會遇到問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM