[英]What can I do to speed up Rails development mode?
开发模式下的Rails是SLOW。 非常非常慢。 我运行Vista,并在development.rb
设置config.cache_classes = true
...但是,它仍然很慢,我必须在更改代码后重新启动服务器。
我的同事在Mac上开发Rails,并看到类似的缓慢。
我的开发时间显着减慢,因为测试代码更改需要几分钟。
这和Rails开发一样好吗? 或者我错过了一些能让它变得快速,生活幸福的东西?
rails-dev-boost插件加速了Rails开发模式。 我遇到了同样的问题,这个插件使我的应用程序非常活泼(相比之下,每页只有少量第二次加载)。 它将以与生产类似的速度运行!
http://github.com/thedarkone/rails-dev-boost
要安装它:
script/plugin install git://github.com/thedarkone/rails-dev-boost
你在说:
启动应用程序的速度很慢(比如运行脚本/服务器)?
如果它是服务器启动,那么你使用的服务器是什么? 根据我的经验,webrick慢于mongrel慢于瘦。 对于本地开发来说,乘客确实是最有效的(尽管我从来没有试过让它在Windows上运行)。
点击开发服务器的页面响应缓慢?
这可能是效率低下的数据库查询,视图中的计算过多可能会被重做等等。如果它在生产中运行正常,这可能不是您的问题。 但是,您运行的Web服务器也会在本地产生差异。 我认为启动的相同顺序也适用于执行。
耙任务永远开始?
我也遇到过这个问题。 如果你有一个包含大量插件的大型项目(这意味着需要运行大量的初始化),那么可能需要一段时间来提升rails环境。 有些东西可能会加速它,但没有银弹。 确保您没有安装任何不再使用的插件,请仔细查看您的环境和初始化程序,以确保其处于良好状态等。
最重要的是,说“Rails开发缓慢”并没有真正指出问题所在。 如果您可以澄清什么是缓慢的,那么您可以获得特定的帮助来加快速度。 我曾参与许多大型项目,这些项目在开发和生产方面都遇到了性能问题。 如果给予正确的关注,我从未遇到过无法改善的情况。 找出问题所在,您通常可以诊断出更好的解决方案,以加快速度。
我一直在遇到同样的问题。 在开发模式下,我的应用程序变得越来越慢。 举个例子,我创建了一个带有新动作的新控制器:
def test
render :text => 'nothing'
end
在开发模式下,这需要12-15秒才能完成(当通过FF和IE请求时)。 我正在使用mongrel(不是群集)。 我在macbook pro上。
在产品模式下,这需要约130毫秒。
必须有一种方法可以找出每个请求正在加载哪些文件(基本概要分析),这样我就可以尝试弄清楚发生了什么以及瓶颈在哪里。
FF Firebug Net显示大部分时间(11-14秒)都花在WAIT状态。
控制台显示:
Completed in 2ms (View: 0, DB: 152)
。
有任何想法吗?
使开发更快的最佳方法是安装名为active_reload
gem
。
要安装此gem
,您可以输入命令,
gem install active_reload
并且,在你的rails项目gemfile中,添加
gem 'active_reload'
然后,重新启动服务器,您将发现开发模式比以前快得多。
我到达这篇文章试图理解为什么我在开发模式下看到这么多时间请求。
我正在开发一个中等规模的应用程序--4000 LOC,113个类 - 并在慢速机器上进行贫民窟。 加载模型代码时,请求之间的时间超过了9/10。
可以预见的是,config.cache_classes = true可以大大提高速度。
我假设您的请求需要几秒钟? (否则你可能不会注意到)。 它对我来说一直很快。 特别是因为我开始使用sinatra而不是rails:D
哦,我忘了提 - 我以前在本地运行rails,但我目前使用VMWare的虚拟centos服务器。 两者都很快
我在development.rb中设置了config.cache_classes = true。 它仍然很慢,我必须在更改代码后重新启动服务器。
您不应该在开发中使用该缓存(特别是在使用它时仍然很慢)。 必须始终重新启动服务器会使您的速度更慢。
你确定Ruby本身很慢吗? 例如,您运行的某些数据库访问代码? 简单的“Hello World”演示同样慢吗?
我们说话有多慢? 页面加载时间超过10秒?
在development.rb中设置config.cache_classes = true将始终在开发模式下加速更大的应用程序。 我喜欢在我的开发环境中使用这一行:
config.cache_classes = ENV["CACHE_CLASSES"] ? ENV["CACHE_CLASSES"] == "true" : false
然后你可以启动你的服务器:
CACHE_CLASSES=true script/server
当你想要更快的响应时间并且不介意这些类不会在每个请求上重新加载时。
如果您使用的是版本3.0或3.1的Rails,则可以使用主动重新加载来加速页面加载时间。 它被卷入Rails 3.2。
Andrews-MacBook-Pro:Sites askegg$ rails test
Andrews-MacBook-Pro:Sites askegg$ cd test
Andrews-MacBook-Pro:test askegg$ ./script/generate model test
exists app/models/
exists test/unit/
exists test/fixtures/
create app/models/test.rb
create test/unit/test_test.rb
create test/fixtures/tests.yml
create db/migrate
create db/migrate/20090812005217_create_tests.rb
Andrews-MacBook-Pro:test askegg$ ./script/performance/benchmarker 1000000 Test.new
user system total real
#1 25.140000 0.200000 25.340000 ( 25.549605)
嗯。 在加载了12个其他程序的macbook pro上,在开发模式下实例化100万个对象需要25秒。 对我来说似乎没问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.