加速Rails 3.2.1开发环境

时间:2012-02-17 19:40:08

标签: ruby-on-rails-3 performance apache passenger

我在开发中运行了一个相当大的项目而且速度太慢了。我相信原因是因为每次请求Rails都会重新加载每个类。这个项目实际上有数百个类,所以响应时间太慢。

如何加快我的开发环境?

我正在运行Apache服务器,最新版本的Passenger,RVM ruby​​ 1.9.2-p180(我或多或少地锁定了ruby版本)。

development.rb:

# (Development-only) what is our localhost called?
LOCALDOMAIN = File.read("/etc/context_dev_host").strip


# Don't verify SSL connections.
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

SMSAdmin::Application.configure do
  config.cache_classes                                 = false # reload on every request
  config.whiny_nils                                    = true # Log error messages when you accidentally call methods on nil.
  config.consider_all_requests_local = true # Show full error reports and disable caching
  config.action_controller.perform_caching             = false # Show full error reports and disable caching
  config.action_mailer.raise_delivery_errors           = false # Don't care if the mailer can't send
  config.action_mailer.default_url_options = { :host => "#{APP_HOSTNAME}" } # default url_for :host
  config.action_mailer.raise_delivery_errors = false

  # Distributed Assets will expect an asset host for path resolution:
  config.action_controller.asset_host = Proc.new do |source, request|
    ssl  = request && request.ssl?
    hash = false
    subd = true
    host = ( hash ? "a#{source.hash % 4}." : "" ) + ( subd && request && request.host || APP_HOSTNAME )
    ( ssl ? "https://" : "http://" ) + host
  end

  ActionMailer::Base.delivery_method = :sendmail

  config.after_initialize do
    # Custom developer files (generally to support Rake tasks, where we don't have a request to determine the FB API Key)
    dh = File.read("/etc/context_dev_host").strip.split(".").first
    df = File.expand_path("../#{dh}.rb", __FILE__)
    if File.exists?(df) then
      silence_warnings do
        require(df)
      end
    end
  end

  # Do not compress assets
  config.assets.compress = false

  # Expands the lines which load the assets
  config.assets.debug = false

  config.assets.digest = false

  # Raise exception on mass assignment protection for Active Record models
  config.active_record.mass_assignment_sanitizer = :strict

  # Log the query plan for queries taking more than this (works
  # with SQLite, MySQL, and PostgreSQL)
  config.active_record.auto_explain_threshold_in_seconds = 0.5
end

0 个答案:

没有答案