Что я могу сделать, чтобы ускорить режим разработки 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.