рельсы 3.1 - заставить ресурсы разработки получать обслуживание, как они были в 3.0.x? - PullRequest
5 голосов
/ 30 августа 2011

Я в процессе обновления приложения. В настоящее время 3.1.rc8.

Проблема в том, что при разработке для каждого запроса создается впечатление, что каждый актив проходит через стек рельсов. Мы говорим о каждом изображении, файле js и css (а их очень много). После первого запроса все они возвращают 304, но это все еще ТАК МЕДЛЕННО.

Существует много всего этого после каждого запроса:

Started GET "/assets/jquery-ui-1.8.16.custom.css?body=1" for 127.0.0.1 at 2011-08-30 15:36:21 -0400
Served asset /jquery-ui-1.8.16.custom.css - 304 Not Modified (0ms)

Started GET "/assets/yui.css?body=1" for 127.0.0.1 at 2011-08-30 15:36:21 -0400
Served asset /yui.css - 304 Not Modified (0ms)

Как сделать так, чтобы активы, только в разработке, обслуживались так же, как в 3.0.x?

Я также использую эти теги для предотвращения компиляции моих css / js в один файл в dev:

= stylesheet_link_tag 'application', :debug => Rails.env.development?
= javascript_include_tag 'application', :debug => Rails.env.development?

Вот мое приложение. Rb

require File.expand_path('../boot', __FILE__)

require 'rails/all'

if defined?(Bundler)
  Bundler.require(:default, :assets, Rails.env)
end

module Fooapp
  class Application < Rails::Application
    config.encoding = "utf-8"

    config.filter_parameters += [:password, :password_confirmation]

    config.assets.enabled = true

    config.assets.version = '1.0'
  end
end

и development.rb:

Fooapp::Application.configure do

  config.cache_classes = false

  config.whiny_nils = true

  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = false

  config.action_mailer.raise_delivery_errors = true

  config.active_support.deprecation = :log

  config.action_dispatch.best_standards_support = :builtin

  config.assets.compress = false

  config.assets.debug = true
end

Ответы [ 2 ]

1 голос
/ 16 сентября 2011

Rails запускает все хуки to_prepare при каждом запросе актива Sprockets - и есть множество гемов, которые выполняют большой объем работы в своих хуках. (Rails сам по себе является косвенным нарушителем, так как он также перезагружает часть вашего кода при каждом запросе актива)

Вместо того, чтобы ждать, пока они оптимизируют свои ловушки предварительной загрузки (в целом или только для запросов на активы), взгляните на https://github.com/wavii/rails-dev-tweaks. Он отключает ловушки предварительной загрузки (включая перезагрузку кода) во время запросов на активы.

Он также настраивается для любого другого типа запроса, который вы хотите

0 голосов
/ 01 сентября 2011

Медлительность, которую я видел, в первую очередь связана с мыслящим сфинксом (который есть в моем Gemfile). В процессе разработки TS загружает некоторые связанные с I18n вещи при каждом запросе страницы ... и каждый ресурс считается запросом страницы.

https://github.com/freelancing-god/thinking-sphinx/blob/v2.0.7/lib/thinking_sphinx/railtie.rb#L29

В любом случае, сопровождающий TS знает, что файл больше не существует на master. Пока не выпущен новый выпуск, вы можете просто закомментировать эти две строки I18n локально.

...