2

ruby on rails几个月以来,我一直在开发应用程序。我使用默认WEBrick服务器来运行应用程序。而且我发现当我在developmentandproduction模式下启动 WEBrick 服务器时,服务器的运行速度production modedevelopment mode.

这背后有什么具体原因吗?有人可以解释一下吗?

4

3 回答 3

3

在开发模式下,类不会被缓存,因此 Rails 每次刷新时都会重新加载所有类。此外,资产编译不会在开发中完成(默认情况下),因此 Rails 每次刷新时都会重新加载所有资产(CSS、Javascript 等)。

于 2013-01-23T09:57:33.210 回答
3

在生产模式下,服务器将代码加载到缓存中,这使事情变得更快。但是,在开发模式下并非如此(因为您不想每次进行更改时都重新启动 webrick)。每个请求都会再次加载相应的代码,这需要一些时间。

最耗费时间的是资产管道。在生产中,您可能会在一两个请求中获得资产的编译版本(javascripts 和 css)。在开发中,您将它们拆分,以进行调试(当然,基于您的环境设置)。而且由于浏览器不会同时处理所有请求,因此某些资产会在其他资产完成加载后加载。您可以使用例如 firebug 的网络控制台来观察这种行为。这意味着:您拥有的资产越多,页面在开发模式下加载的时间就越长。

于 2013-01-23T09:58:48.040 回答
2

区别在于 2 个环境。在 Rails 中,有几种环境。每个人都有自己的数据库配置和 Rails 选项。

您可以使用 Rails.env 变量对特定环境进行一些不同的更改。

默认情况下,开发环境没有所有缓存并激活自动重新加载。生产环境带有所有缓存。

但是,如果您愿意,您可以制作类似开发的生产环境或类似生产的开发环境。

您也可以添加一些新的特定环境。

创建新环境:

假设您要创建 hudson 环境。

Create a new environment file in config/environments/hudson.rb. 

您可以先克隆一个现有的,例如 config/environments/test.rb。在 config/database.yml 中为您的环境添加一个新的配置块。就这样。

现在你可以启动服务器了

ruby 脚本/服务器 -e hudson

运行控制台

红宝石脚本/服务器哈德森

等等。

于 2013-01-23T10:17:48.323 回答