2016-07-07 6 views
0

Dies ist vielleicht eine Frage, aber ich arbeite an einem Ruby-Projekt und jetzt muss ich einige Dateien von localhost für ein paar Tests, die eine geladene Webseite lesen müssen örtlich. Ich verwende gulp dafür, aber ich würde es gerne in Ruby tun. Ich habe von Rack erfahren, aber ich kann meinen Kopf nicht darum drehen, um das sehr einfache zu tun, was ich tun möchte.Einrichten eines lokalen Basisservers mit Ruby

Dies ist meine Ordnerstruktur:

$ tree 
. 
├── lib 
│   └── page_reader.rb 
├── spec 
│   ├── fixtures 
│   │   └── index.html 
│   └── page_reader_spec.rb 
└── gulpfile.js 

Was ich habe jetzt in meinem gulpfile.js ist:

var 
    browsersync = require('browser-sync').create(), 
    gulp   = require('gulp') 
; 

gulp.task('server', function() { 
    browsersync.init({ 
    server: { 
     baseDir: './spec/fixtures/' 
    }, 
    port: 4000, 
    notify: false, 
    open: false 
    }); 
}); 

Grundsätzlich habe ich einen index.html innerhalb ./spec/fixtures/ Ordner und ich bin mit dem browser-sync Modul starte einen lokalen Server, dann zeige ich auf den Ordner fixtures in meinem Testordner. Wenn ich die Tests ausgeführt werden soll, muss ich tun:

$ gulp server 

in einem Terminal, dann http://localhost:4000 zu gehen, um die Seite zu laden, gegen die ich die Tests am laufen, und dann in einem anderen Terminal zu tun:

$ bundle exec rspec 

, um die Tests auszuführen.

Gibt es eine Möglichkeit zu tun, was ich tue durch gulp, sondern Ruby stattdessen verwenden? Ich suchte nach einem Edelstein, der auf ähnliche Weise funktionierte wie das browser-sync Modul, konnte aber keine finden. Ich denke jedoch, dass es einen Weg geben muss, der so einfach ist wie mit Schluck. Ich kann es weiterhin mit gulp machen, da es perfekt funktioniert, aber es fühlt sich merkwürdig an, JavaScript und Ruby auf diese spezielle Art und Weise und in diesem Kontext zu mischen.

+0

Welche spezifische Funktionalität der Browsersynchronisation möchten Sie einbeziehen? Der Name Ihrer Frage weist darauf hin, dass Sie versuchen, einen statischen HTTP-Server einzurichten, der einfacher ist als das, was Sie tun möchten. Sieh dir Seleniums Rubin-Bindungen an. –

Antwort

1

Simplest Antwort, die ich kenne:

cd spec/fixtures && ruby -run -e httpd -- -p 4000 . 

Das ist mit freundlicher Genehmigung von Aaron Patterson (@tenderlove) über Gavin Kistner, Ben Oakes und eine Besetzung von Tausenden. Ich liebe eine gute Gemeinschaft. =]

+0

Danke, das hat funktioniert und ist genau das, was ich wollte! Und ich kann es auch mit CI +1 verwenden –