如何在Ruby / Rails中启动一个简单的服务器?

时间:2017-04-17 00:53:20

标签: python ruby-on-rails ruby ruby-on-rails-4

我的设计师最近为我提供了包含不同页面的新设计文件夹,并提到了以下内容:

您需要使用http服务器提供dist文件夹。例如:python -m SimpleHTTPServer 8000 为不同的页面打开http://localhost:8000 http://localhost:8000/listing.htmlhttp://localhost:8000/detail_view.html

如何使用Rails完成此操作?还是Ruby?

4 个答案:

答案 0 :(得分:1)

使用以下命令创建新的rails应用程序后

rails new your_app

只需在终端中输入rails srails server即可。这将在localhost:3000上启动服务器。

答案 1 :(得分:1)

也许看看用HTML,CSS和JavaScript静态资产文件夹(最好称为公共文件夹)的文档根来打开Webrick服务器。

require 'webrick'

server = WEBrick::HTTPServer.new(Port: 8000, DocumentRoot: "/var/www/app/public")
server.start

一个班轮当量:

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

这只是前端人员提供的Python代码的Ruby版本。

也许只是使用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/

修改

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

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

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

但WEBrick本身就是一个多线程的网络服务器。

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

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

答案 2 :(得分:0)

如果我正确理解你,你会想到在使用Ruby时提供静态文件。

我添加了这个答案,因为作为Ruby标准库(WEBrick)的一部分的内置服务器对于生产环境或更重的负载(即更大的文件)来说并不是最佳的。

通常,大多数生产环境使用网络堆栈的方式略有不同。通常,nginx / Apache层将处理静态文件,而Ruby服务器将处理动态内容。

但是,为了让生活更轻松(牺牲资源),大多数主要的Ruby框架(Rails,Sinatra等)都支持静态文件服务以及动态功能。

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

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

这是一种直接使用Rack的方法,可以与大多数Ruby服务器一起使用(例如pumaiodinethin等等。&lt; < / p>

这是一个简单的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

确保从命令行运行安装ruby服务器gem ...您可以使用以下任何一种:

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

接下来,只需从命令行运行服务器(在放置ruby应用程序config.ru的文件夹中)。即:

puma -p 8888
# or
iodine -p 8888

<强> P.S。

话虽如此......像nginx或apache这样的网络服务器可能是最好的工具。

除此之外,您可以使用iodine来提供未加密(无SSL)的静态文件(请记得首先安装):

iodine -www ./public

您不需要Ruby应用程序,您只需从命令行运行Ruby应用程序服务器,而无需运行任何Ruby应用程序。

答案 3 :(得分:-1)

您可以尝试使用ruby -run -e httpd . -p 8000,它将在当前目录中启动WEBrick服务器。

检查此链接以获取更多信息:http://sweetme.at/2013/08/28/simple-local-http-server-with-ruby/