我使用多个Rails应用程序,一些使用Rails 3.2 / Ruby 2.0,另一些使用Rails 2.3 / Ruby 1.8.7。
他们的共同点是,随着他们的成长和添加更多的依赖/宝石,他们需要更长的时间才能开始。开发,测试,生产,控制台,没关系;有些需要60多秒。
首选的首选方法是什么,分析导致加载时间如此之慢的原因,以及两个,改善加载时间?
答案 0 :(得分:18)
有一些事情可能导致这种情况。
bundle clean
。如果您正在使用RVM,则可以尝试创建一个新的gemset。就分析而言,您可以使用ruby-prof来分析启动应用时发生的情况。您可以将config/environment.rb
包装在ruby-prof块中,然后使用它来生成类似rails r ''
之类的引导周期的配置文件报告。这可以帮助您追踪您在开机时花费大量时间的地方。您也可以分析各个部分,例如boot.rb
中的捆绑工具设置,或#initialize!
中的environment.rb
来电。
您可能不会考虑的是DNS超时。如果您的应用程序在启动时执行DNS查找(无法解析),这些可能会阻止$ timeout秒的进程(在某些情况下可能高达30!)。您也可以审核这些应用程序。
答案 1 :(得分:10)
Ryan对加速测试,控制台,佣金任务有很好的关注:http://railscasts.com/episodes/412-fast-rails-commands?view=asciicast
我检查了那里的每一种方法,发现“spring”是最好的。只需运行
等任务即可$ spring rspec
第一次弹簧跑的时间与以前相同,但第二次和以后会更快。
另外,根据我的经验,有时间你需要停止弹簧服务器并在出现奇怪错误时重新启动,但机会很少。
答案 2 :(得分:0)
对于ruby 2应用,请尝试使用zeus - https://github.com/burke/zeus
1.8应用似乎比1.9快得多,spork可能有帮助吗? http://railscasts.com/episodes/285-spork