如何配置 Rails 应用程序的启动?

Posted

技术标签:

【中文标题】如何配置 Rails 应用程序的启动?【英文标题】:How can I profile booting of a Rails application? 【发布时间】:2011-12-23 09:52:58 【问题描述】:

简单的问题,我有一个遗留的 Rails 2.3 应用程序,做任何事情都需要很长时间。 rake 耗时超过 25 秒,但看起来并没有真正发生任何事情。

有什么简单的方法可以让我从应用加载时获取某种分析器转储,以查看哪些方法花费的时间最长?

同时适用于 Rails 2.3 和 3.1 的解决方案会更有帮助。

【问题讨论】:

@rkb 目前是 REE,但我可以使用任何其他版本进行分析,因为所有 gem 都兼容 1.9。 【参考方案1】:

分析需要 rails 环境的 rake 任务,如下所示:

 desc "Load it"
 task :loadit => :environment do

 end

然后使用 ruby​​-prof 进行配置

ruby -Ilib -S ruby-prof -p graph_html `which rake` loadit > profile.html

应该使用 rails 2.3 只在 3.x 上测试过,但我看不出它为什么不能工作。

【讨论】:

rake environment 的任务就是加载 Rails 环境。 啊,我猜你也可以只运行 rake 环境,但也许你想在 rake 任务中尝试一些方法,比如 FooModel.all 或其他东西。【参考方案2】:

您可以使用挂接的分析器来启动您的应用程序,例如ruby-prof 或 perftools.rb。当它还在启动时,启动一个 HTTP 查询,它会在应用程序启动时尝试去GET 一个/kill_me 路由。 /kill_me 可能会导致您的应用程序通过调用 exit 优雅地死掉。因此,您获得了您的创业公司的个人资料。

【讨论】:

以上是关于如何配置 Rails 应用程序的启动?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Rails 中定义自定义配置变量

ruby rails中如何配置puma服务监听指定的IP地址

Ruby on Rails:如何配置设计邮件程序?

如何使用 i18n 和 rails 配置语言环境别名?

Rails 应用程序中的默认 Sidekiq Redis 配置

如何使 Linkedin 添加到我的 Rails Api 应用程序中的配置文件按钮自动填充数据?