2013-03-19 9 views
6

Her biri kendi dosyasında tanımlı dört ilgili sınıf içeren eski bir RoR koduyla çalışıyorum. Bu sınıfların tümü, ayrıştırıcı sınıflarıdır ve uygulama/model/ayrıştırıcılarda yaşar. Her dosya adı _parser.rb ile biter.Ruby - :: sınıf adı

class Parsers::AdfParser 

Ben bunun ayrıştırıcılar :: kısmı ne yaptığını olarak kayboldum:

Burada dosya adf_parser.rb bir örnek sınıf def cümlesi.

  • Bulduğum her yerde tanımlı Parsers diye adlandırılan açık bir modül yok.
  • Sadece modül adlarını sınıf adlarına ekleyerek örtük olarak modüller oluşturma hakkında bir belge göremiyorum.
  • Sadece dış bağımlılık "gerektirir" csv 'dir.
  • Sınıf def içinde ifadeler vardır, ancak sınıf adını açıklayacak bir şeyleri olduğunu sanmıyorum.
  • Yeni bir RoR sınama projesi oluşturdum ve bu dosyaların dizelerini paralel bir dizine ekledim ve ad hatası nedeniyle komut satırından çalışmazlar.
  • Bu şekilde adlandırılmış sınıfların çevrimiçi örneklerini göremiyorum.

Bunun roket ameliyatı olmadığından emin değilim, fakat sabahlarımın çoğunu bunu anlamaya çalışırken kaybettim ve birileri bana neler olduğunu anlatabilirse çok sevinirim.

Güncelleme: Bu, alt dizin adına bağlı olarak sadece Rails büyüsünün bir parçası gibi görünüyor. Test uygulamamdaki bir hatayı almamın sebebi, dosyaları bir şekilde Rubils ile çağırmak yerine sadece ruby ​​tercümanıyla çalıştırdım. düzgün çalışması Bunun için

module Parsers 
    class AdfParser 

ve dosya konumu ayrıştırıcılar/adf_parser.rb, app/modelleri veya lib altında olmadığını olmalıdır otomatik yüklenmesi gereken:

+0

Sadece bir ad alanı. Ne anlamaya çalışıyorsun? –

+0

Komut satırında aldığınız hata nedir? @DaveNewton gibi bir isim olduğunu söyledi. İsterseniz My :: Fancy :: Parsers :: AdfParser'ı yapabilirsiniz, ancak bu şekilde her seferinde bu şekilde erişmeniz gerekir. – awbergs

+2

@Dave evet, ancak ad alanı bir yerlerde tanımlanmalıdır. OP'nin “Parsers” modülünün tanımını bulamadıklarını söylüyorum, bu yüzden özel bir şey olup olmadığını merak ediyor. – mikej

cevap

6

class Parsers::AdfParser için pratik eşdeğer olduğunu. Temel olarak dosya yolunun sınıf hiyerarşisini taklit etmesi gerekir.

+0

Düşündüğüm şey buydu ama yeni bir kukla proje oluşturduğumda ve bir parsers klasörü altında benzer sınıf def'leri koymaya çalıştığımda bir ad hatası aldım. Bu işi yapmak için sınıf dosyaları raylarla oluşturulmalı mı? – whognu

+0

Bunu kendim lib/'den denedim ve işe yaramadı, dolayısıyla yanlış cevabım (o zamandan beri silmek için oy verdim).App/models/'deki gibi bazı dizin adlarını denediğimde, hepsi işe yaradı. Temiz. – BaronVonBraun

+1

Sınıfların ray jeneratörleri ile oluşturulmasına gerek yoktur. Ancak, config/application.rb dosyasında ayarlanan Rails otomatik olarak yüklenecek bir yolun altında olması gerekir. Tipik olarak 'config.autoload_paths + = Dir [" # {config.root}/app/models/**/"]' ve lib için de aynı olacak. Daha sonra tüm yazım dosyaları 'parsers' alt dizininde ve Rails ad alanı içinde olduğundan, 'Parser.adfParser.new' – boulder

3

Bu modüllerin parsers alt dizinindedir; Kongre tarafından sizin için ad alanlarını yönlendirir.

+0

@ user1476065 gibi şeyler yazabilirsiniz. – Viren