2016-07-07 71 views
0

这可能是一个noobie问题,但我正在开发一个Ruby项目,现在我必须为localhost提供一些文件来进行一些需要读取加载的网页的测试本地。我正在使用gulp,但我想用Ruby来做。我发现了关于Rack的事情,但我无法用头来包裹它,以做我想做的非常简单的事情。用ruby设置了一个基本的本地服务器

这是我的文件夹结构:

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

我现在在我的gulpfile.js是:

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 
    }); 
}); 

基本上,我有一个index.html./spec/fixtures/文件夹,我使用的是browser-sync模块启动本地服务器,然后将它指向我的测试文件夹中的fixtures文件夹。当我要运行的测试,我必须做的:

$ gulp server 

在一个终端,然后去http://localhost:4000加载一个我正在运行测试的网页,然后在另一端做:

$ bundle exec rspec 

运行测试。

有没有办法通过gulp来做我正在做的事情,但是使用Ruby来代替?我搜索了一个和browser-sync模块类似的gem,但找不到任何东西。不过,我认为必须有一种简单的方法,就像它用吞咽一样。我可以继续使用gulp来完成它,因为它完美地工作,但在这种情况下以这种特定方式混合使用JavaScript和Ruby会感到很奇怪。

+0

您希望包含哪些浏览器同步功能?你的问题标题表明你正试图建立一个静态的http服务器,这比你想要做的更简单。看看Selenium的红宝石绑定。 –

回答

1

简单的答案我知道:

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

这就是Aaron Patterson@tenderlove)礼貌,通过Gavin KistnerBen Oakes,以及数以千计的铸造。我喜欢一个好的社区。 =]

+0

谢谢,这工作,正是我想要的! 而且我也可以使用CI + 1 –