2017-04-17 46 views
-4

我的设计师最近给我提供了不同页面的新设计文件夹,并提到以下内容:如何在Ruby/Rails中启动一个简单的服务器?

您需要使用http服务器为dist文件夹提供服务。例如:蟒蛇-m SimpleHTTPServer 8000 开放http://localhost:8000http://localhost:8000/listing.htmlhttp://localhost:8000/detail_view.html

不同的页面我如何做到这一点使用Rails?还是Ruby?

+0

这不是一个rails应用程序,它只是基本的html。 css和js。他建议我们用http服务器来提供文件夹,我们如何使用ruby而不是python来做到这一点?按照上面的例子。 –

+0

我从上面的评论意识到,你知道动态和静态内容的不同。我正在改变我的答案。也许改变你的问题到评论中的问题,并删除Rails标签。 – fbelanger

+0

如果你不需要Rails,并且你有一个可行的Python解决方案,为什么不坚持呢? – tadman

回答

0

一旦你创建了一个新的Rails应用程序有:

rails new your_app

只需键入rails srails server到终端。这将在localhost:3000上启动一个服务器。

+0

你会运行Rails有一个静态文件服务器?恕我直言,这有点像使用大锤打开螺丝钉...我并不是说它不会打开任何需要的东西,但它并不是工作的最佳工具。 – Myst

1

也许看看用HTML,CSS和JavaScript静态资产文件夹(最好称为public)的文档根旋转Webrick服务器。

​​

的一个衬垫当量:

ruby -rwebrick -e'WEBrick::HTTPServer.new(Port: 8000, DocumentRoot: "/var/www/app/public").start' 

这仅仅是通过您的前端家伙提供的Python代码的红宝石版本。

也许只是使用Python,说实话它并不重要。

http://ruby-doc.org/stdlib-2.0.0/libdoc/webrick/rdoc/WEBrick.html

http://tobyho.com/2009/09/16/http-server-in-5-lines-with/

EDIT

在生产环境中,并发是必要的。

WEBrick已被Heroku等提供程序强烈推荐,因为默认情况下,它在Rails使用时表现为单个线程。

https://devcenter.heroku.com/articles/ruby-default-web-server

但使用WEBrick本身是一个多线程Web服务器。

https://github.com/rails/rails/issues/10772

Is puma the ONLY multi-threaded rails 4 http server?

0

如果我正确认识你,你想知道同时使用Ruby提供静态文件。

我添加了这个答案,因为作为Ruby标准库(WEBrick)的一部分提供的内置服务器对于生产环境或较重的负载(即较大的文件)而言并非最佳选择。

通常,大多数生产环境使用网络堆栈有点不同。通常,nginx/Apache层将处理静态文件,而Ruby服务器将处理动态内容。但是,为了使生活更轻松(以牺牲资源为代价),大多数主要的Ruby框架(Rails,Sinatra等)都支持静态文件服务以及动态功能。

您可以使用框架或查看Rack(这是大多数框架使用的平台)来提供静态文件。

此外,一些Ruby的服务器,如iodine(我是作者)支持静态文件服务...

这里是直接使用机架的方法,可与大多数红宝石服务器(如puma使用,iodinethin等)。

这里有一个简单的Rack应用,节省下在你的应用程序的根命名config.ru文件:

# Our app will simply return a 404 not found code 
RESPONSE = [404, { 'Content-Type'.freeze => 'text/html'.freeze, 
     'Content-Length'.freeze => '14'.freeze }.freeze, 
['File Not Found'.freeze]].freeze 
# This is the application object 
app = proc do |_env| 
    RESPONSE 
end 

# We will use the Rack static file service middleware. 
# You might want to update the folder name. 
use Rack::Static, :root => 'public' 

run app 

请确保安装的命令行运行红宝石服务器宝石...你可以使用以下任一的:

gem install puma 
# or 
gem install iodine 
# or 
gem install thin 

接着,简单地运行在命令行服务器(您的红宝石应用config.ru被放置在文件夹中)。即:

puma -p 8888 
# or 
iodine -p 8888 

P.S.

话虽如此......像nginx或apache这样的web服务器可能是这项工作的最佳工具。

除非,你很可能使用iodine未加密(SSL无)静态文件与服务(记住安装在前):

iodine -www ./public 

你并不需要为这个Ruby应用程序,你会只需从命令行运行Ruby应用程序服务器,而不需要任何Ruby应用程序运行。

相关问题