Что я могу сделать, чтобы ускорить режим разработки Rails?

Rails, в режиме разработки SLOW. Очень, очень медленно. Я запускаю Vista, и я установил config.cache_classes = true в development.rb... Но он все еще медленный, и я должен перезапустить сервер после того, как я изменил свой код.

Мой коллега разрабатывает Rails на Mac и видит подобную медлительность.

Мое время разработки значительно замедляется, потому что для проверки изменений кода требуется несколько минут.

Разве это так хорошо, как развивается Rails? Или мне не хватает чего-то, что сделает его быстрым, и моя жизнь счастлива?

Ответ 1

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)

Хммм. 25 секунд для создания 1 миллиона объектов в режиме разработки на macbook pro с 12 другими загруженными программами. Кажется мне хорошо.

Ответ 2

Плагин rails-dev-boost ускоряет режим разработки Rails. У меня была такая же проблема, и этот плагин сделал мое приложение очень быстрым (по сравнению с несколькими секундами загрузки на страницу). Он будет работать с такой же скоростью, как и производство!

http://github.com/thedarkone/rails-dev-boost

Чтобы установить его:

script/plugin install git://github.com/thedarkone/rails-dev-boost

Ответ 3

Вы говорите:

  • Медленность запуска приложения (например, запуск script/server)?

    Если это запуск сервера, то какой сервер вы используете? По моему опыту webrick медленнее, чем mongrel медленнее, чем тонкий. Пассажир действительно наиболее эффективен для локального развития (хотя я никогда не пытался его запускать на окнах).


  • Медленные ответы на страницы от попадания в dev-сервер?

    Это могут быть неэффективные запросы к базе данных, слишком много вычислений в представлении, которое может быть переработано и т.д. Если он работает нормально, это, вероятно, не ваша проблема. Тем не менее, веб-сервер, который вы запускаете, также будет иметь значение в вашей скорости локально. Я думаю, что для запуска также применяется тот же порядок запуска.


  • Запуск задач, начинающихся навсегда?

    У меня тоже была эта проблема. Если у вас большой проект с большим количеством плагинов (что означает много инициализации, которая должна выполняться), может потребоваться некоторое время, чтобы развернуть среду рельсов. Есть вещи, которые, вероятно, ускорят его, но нет серебряной пули. Убедитесь, что у вас нет плагинов, которые вы больше не используете, внимательно изучите среду и инициализаторы, чтобы убедиться, что она в хорошей форме и т.д.


Нижняя строка, указывающая, что "Rails медленная в развитии" на самом деле не указывает проблему. Если вы можете уточнить, что медленно, то вы можете получить конкретную помощь, чтобы ускорить его. Я работал над множеством довольно крупных проектов, которые пострадали от проблем с производительностью в разработке, а также в производстве. У меня никогда не было ситуации, которая не может быть улучшена, если будет уделено правильное внимание. Определите проблему, и вы можете обычно диагностировать лучшее решение для ускорения работы.

Ответ 4

faster_require

http://github.com/rdp/faster_require

может помочь

скорость значительно увеличивается при использовании окон

также spork может использоваться с jruby для ускорения модульных тестов

http://github.com/rdp/spork

Ответ 5

Я сталкивался с теми же проблемами. Мое приложение в режиме dev продолжает медленнее и медленнее. В качестве примера я создаю новый контроллер с новым действием:

  def test
    render :text => 'nothing'
  end

В режиме dev это занимает от 12 до 15 секунд для завершения (при запросе через FF и IE). Я использую mongrel (не кластерный). Я нахожусь в macbook pro.

В режиме prod это занимает ~ 130 мс.

Должен быть способ узнать, какие файлы загружаются для каждого запроса (базовое профилирование), поэтому я могу попытаться выяснить, что происходит и где находится узкое место.

FF Firebug Net показывает, что большую часть времени (11-14 секунд) тратится в состоянии WAIT.

Консоль показывает:

Completed in 2ms (View: 0, DB: 152)

.

Любые идеи?

Ответ 6

Я пришел на это сообщение, пытаясь понять, почему я видел столько времени между запросами в режиме разработки.

Я работаю над приложением небольшого размера - 4000 LOC, 113 классов - и сбивает его на медленной машине. При загрузке кода модели происходит более 9/10 секунд времени между запросами.

Как и ожидалось, config.cache_classes = true значительно ускоряет процесс.

Ответ 7

лучший способ, чтобы ускорить разработку, устанавливает gem с именем active_reload.

Чтобы установить этот gem, вы можете ввести команду

gem install active_reload

И, в вашем проекте gemfile rails, добавьте

gem 'active_reload'

Затем перезагрузите сервер, и вы найдете режим разработки намного быстрее, чем раньше.

Ответ 8

Я предполагаю, что ваши запросы занимают секунды? (В противном случае вы, вероятно, не заметили бы). Это всегда было быстро для меня. Тем более, что я начал использовать синатра вместо рельсов: D

О, и я забыл упомянуть - я использовал локальные рельсы, но в настоящее время я использую виртуальный сервер centos с VMWare. Оба были быстрыми

Ответ 9

Я установил config.cache_classes = true в development.rb. Он все еще медленный, и я должен перезапустить сервер после того, как я изменил свой код.

Вы не должны использовать этот кеш в разработке (особенно если он все еще медленный при его использовании). Необходимость перезапуска сервера все время замедлит вас.

Вы уверены, что Ruby очень медленный? Не, например, какой-то код доступа к БД, который вы запускаете? Простая демонстрация "Hello World" одинаково медленная?

И как медленно мы говорим? Время загрузки страницы более 10 секунд?

Ответ 10

Настройка config.cache_classes = true в development.rb всегда будет ускорять работу больших приложений в режиме dev. Мне нравится иметь эту строку в моей среде dev:

config.cache_classes = ENV["CACHE_CLASSES"] ? ENV["CACHE_CLASSES"] == "true" : false

Затем вы можете запустить свой сервер с помощью:

CACHE_CLASSES=true script/server

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

Ответ 11

Если вы используете версии 3.0 или 3.1 Rails, вы можете использовать активную перезагрузку, чтобы ускорить время загрузки страницы. Он был перевернут в Rails 3.2.