Oui, rails est de plus en plus lent en temps de boot/chargement, c'est pénible.
Il y a des workarounds. Pour les tests, si tu utilises rspec, tu peux utiliser la syntaxe : rspec spec/ plutôt que : rake spec Ça divise le temps de chargement par deux (parce que rake load une fois rails pour rake et une autre fois pour rspec). De manière générale, si tu peux exécuter une commande sans passer par rake, fais-le. Ensuite, toujours pour les tests, il y a spork, qui te permet de preloader l'environement. Pour le coup, ça va très vite (comparé à ce dont tu as l'habitude), parce qu'il n'y a plus du tout à loader rails. Bien sûr, tu dois ensuite gérer le problème des classes mises en cache. Enfin, il y a guard. Guard peut lancer spork, et executer des commandes arbitraires lorsqu'un qu'un fichier est modifié, par exemple lancer la précompilation des assets, ou toute autre tâche rake que tu utilises régulièrement. L'avantage est le même : rails est déjà loadé. Le problème est le même : les classes sont mises en cache, et tu te tappes quand même tout le temps de loading quand tu dois reloader l'app. Spork : https://github.com/sporkrb/spork-rails Guard : https://github.com/guard/guard Le mercredi 11 avril 2012 à 18:31 -0400, Guirec Corbel a écrit : > Bonjour, > > J'aurais voulu savoir quel était le temps de chargement chez vous. > > J'ai généré un nouveau projet rails vide et fait ceci : > $ time rails g scaffold User username:string age:integer > invoke active_record > create db/migrate/20120411220219_create_users.rb > create app/models/user.rb > invoke test_unit > create test/unit/user_test.rb > create test/fixtures/users.yml > route resources :users > invoke scaffold_controller > create app/controllers/users_controller.rb > invoke erb > create app/views/users > create app/views/users/index.html.erb > create app/views/users/edit.html.erb > create app/views/users/show.html.erb > create app/views/users/new.html.erb > create app/views/users/_form.html.erb > invoke test_unit > create test/functional/users_controller_test.rb > invoke helper > create app/helpers/users_helper.rb > invoke test_unit > create test/unit/helpers/users_helper_test.rb > invoke assets > invoke coffee > create app/assets/javascripts/users.js.coffee > invoke scss > create app/assets/stylesheets/users.css.scss > invoke scss > create app/assets/stylesheets/scaffolds.css.scss > > real 0m4.523s > user 0m4.164s > sys 0m0.292s > > $ time rake db:migrate > == CreateUsers: migrating > ==================================================== > -- create_table(:users) > -> 0.0031s > == CreateUsers: migrated (0.0037s) > =========================================== > > > real 0m4.356s > user 0m3.800s > sys 0m0.224s > > $ time rake > Run options: > > # Running tests: > > > > Finished tests in 0.005018s, 0.0000 tests/s, 0.0000 > assertions/s. > > 0 tests, 0 assertions, 0 failures, 0 errors, 0 skips > Run options: > > # Running tests: > > ....... > > Finished tests in 0.556524s, 12.5781 tests/s, 17.9687 > assertions/s. > > 7 tests, 10 assertions, 0 failures, 0 errors, 0 skips > > real 0m16.688s > user 0m14.921s > sys 0m0.944s > > J'ai donc un total de temps d'exécution de 25 secondes qui augmente > beaucoup avec l'avancement des projets. Par exemple, quand j'execute > time rake test et time rake spec, pour > https://github.com/railsfrance/railsfrance.org modifié pour ruby1.9.3 > et rails3.2.2, j'obtiens un temps de 7 minutes pour l'exécution de 139 > tests. Est-ce un temps normal? > > Merci à tous et bonne soirée. > > > -- > Vous avez reçu ce message, car vous êtes abonné au groupe > "Railsfrance" de Google Groups. > Pour transmettre des messages à ce groupe, envoyez un e-mail à > l'adresse [email protected] > Pour résilier votre abonnement envoyez un e-mail à l'adresse > [email protected] -- Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups. Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse [email protected] Pour résilier votre abonnement envoyez un e-mail à l'adresse [email protected]
