Rails,在开发模式下是SLOW。非常非常慢。我运行Vista,并在config.cache_classes = true
中设置development.rb
...但是,它仍然很慢,我必须在更改代码后重新启动服务器。
我的同事在Mac上开发Rails并看到类似的缓慢。
我的开发时间显着减慢,因为测试代码更改需要几分钟。
这和Rails开发一样好吗?或者我错过了能让它快速生活,生活幸福的东西?
答案 0 :(得分:26)
rails-dev-boost插件加速了Rails开发模式。我遇到了同样的问题,这个插件使我的应用程序非常活泼(相比之下,每页只有少量第二次加载)。它将以与生产类似的速度运行!
http://github.com/thedarkone/rails-dev-boost
安装它:
script/plugin install git://github.com/thedarkone/rails-dev-boost
答案 1 :(得分:7)
你在说:
启动应用程序的速度很慢(比如运行脚本/服务器)?
如果是服务器启动,那么你使用的服务器是什么?根据我的经验,webrick慢于mongrel慢于瘦。对于本地开发来说,乘客确实是最有效的(尽管我从未试图让它在Windows上运行)。
点击开发服务器的页面响应速度慢吗?
这可能是效率低下的数据库查询,视图中可能会重做的计算过多等等。如果它在生产中运行正常,这可能不是您的问题。但是,您运行的Web服务器也会在本地产生差异。我认为同样的启动顺序也适用于执行。
Rake任务需要永远开始吗?
我也遇到过这个问题。如果你有一个包含大量插件的大型项目(这意味着需要运行大量的初始化),那么可能需要一段时间来提升rails环境。有些东西可能会加速它,但没有银弹。确保您没有安装任何不再使用的插件,请仔细查看您的环境和初始化程序,以确保其状态良好等。
底线是,说“Rails开发缓慢”并没有真正指出问题所在。如果您可以澄清什么是缓慢的,那么您可以获得特定的帮助来加快速度。我曾参与许多大型项目,这些项目在开发和生产方面都遇到了性能问题。如果给予正确的关注,我从未遇到过无法改善的情况。找出问题所在,您通常可以诊断出更好的解决方案,以加快速度。
答案 2 :(得分:3)
答案 3 :(得分:2)
我遇到了同样的问题。在开发模式下,我的应用程序变得越来越慢。例如,我使用新操作创建一个新控制器:
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)
有什么想法吗?
答案 4 :(得分:1)
我到达这篇文章试图理解为什么我在开发模式下看到这么多时间请求。
我正在开发一个中等规模的应用程序 - 4000个LOC,113个类 - 并在慢速机器上进行贫民窟。加载模型代码时,请求之间的时间间隔超过了9/10。
可以预见,config.cache_classes = true会大大加快速度。
答案 5 :(得分:1)
要使开发更快的best way是安装名为gem
的{{1}}。
要安装此active_reload
,您可以输入命令
gem
并且,在rails项目gemfile中,添加
gem install active_reload
然后,重新启动服务器,您将发现开发模式比以前快得多。
答案 6 :(得分:0)
我假设您的请求需要几秒钟? (否则你可能不会注意到)。它对我来说一直很快。特别是因为我开始使用sinatra而不是rails:D
哦,我忘了提 - 我曾经在本地运行rails,但我目前使用虚拟centos服务器和VMWare。两者都很快
答案 7 :(得分:0)
我在development.rb中设置了config.cache_classes = true。它仍然很慢,我必须在更改代码后重新启动服务器。
您不应该在开发中使用该缓存(特别是在使用它时仍然很慢)。 必须一直重启服务器会使你的速度更慢。
你确定Ruby本身很慢吗? 例如,您运行的某些数据库访问代码? 简单的“Hello World”演示同样慢吗?
我们说话的速度有多慢? 页面加载时间超过10秒?
答案 8 :(得分:0)
在development.rb中设置config.cache_classes = true将始终在开发模式下加速更大的应用程序。我喜欢在我的开发环境中使用这一行:
config.cache_classes = ENV["CACHE_CLASSES"] ? ENV["CACHE_CLASSES"] == "true" : false
然后您可以使用以下命令启动服务器:
CACHE_CLASSES=true script/server
如果您希望更快的响应时间,并且不介意不在每个请求上重新加载类。
答案 9 :(得分:0)
如果您使用的是版本3.0或3.1的Rails,则可以使用active reload来加速页面加载时间。它被卷入了Rails 3.2。
答案 10 :(得分:-13)
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秒。对我来说似乎没问题。