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]

Répondre à