2016-05-20 4 views
0

Ich arbeite an einem bestimmten Projekt, wo ich ein SDK (Art von Edelstein) über Openid_connect Gem schreiben muss. Momentan besteht mein Code aus einer einzelnen Datei (aber ich werde auch einige Tests dafür schreiben) und eine Beispiel-App, die die Verwendung von SDK zeigt. Problem ist, dass ich SDK nicht als Rubygem versenden kann, da es in das gleiche Git-Repository wie die Beispiel-App verschoben werden muss. Der Client wird nur SDK verwenden. SDK ist eine einzelne Klasse mit Methoden darin.Struktur von Ruby-Code, der kein Edelstein sein soll

Mein aktueller Ansatz ist, SDK in RubyOnRails/lib-Ordner zu schreiben (aber SDK muss auch mit anderen Ruby-Frameworks arbeiten) und Client das SDK im lib-Ordner der Beispiel-App herunterladen lassen.

1) Sollte mein Code ins Lib- oder Händlerverzeichnis gehen? Oder gibt es einen besseren Ansatz?

2) Wie kann dieser Code in Ruby App enthalten sein? Installiert als ein Juwel oder im Lieferumfang enthalten ...

3) Können die Tests im selben Ordner wie SDK (nicht in Schienen/Testordner) gehen?

+0

Ich würde ein Juwel (einschließlich Tests) schreiben und die Beispiel-App in ein eigenes Git-Repository zusammen mit einem Gemfile, das den Edelstein enthält. – Stefan

+0

Ja, aber die spezifische Anforderung des Projekts besteht darin, sowohl die Beispiel-App als auch das Juwel in dasselbe git-Repository zu übertragen. – Marcis

+1

Ihr Juwel könnte ein Beispielverzeichnis enthalten, das die Beispielanwendung enthält. – Stefan

Antwort

0

1) Es klingt wie dieser Code ist überhaupt nicht abhängig von Rails. Erstellen Sie daher kein Rails-Projekt dafür. Das würde hinzufügen, dass Zeremonien und Abhängigkeiten unnötig sind.

2) Es ist nichts falsch daran, Beispieldateien in einem Git Repo eines Edelsteins zu haben. Sie können sie beispielsweise in ein Verzeichnis mit dem Namen samples oder examples stellen.

3) eine herkömmliche gem Verzeichnisstruktur erstellen, verwenden bundle:

bundle gem my_gem_name 

4) gehen Ihre Tests sollten in einem Verzeichnis mit dem Namen test wenn sie Minitest oder spec wenn sie RSpec sind.