Rails 4 et MongoDB part 1
Changeons un peu et parlons de Ruby, Ruby on Rails et MongoDB.
J’ai eu envie de voir ce qu’il se fait ailleurs et je pense que l’univers de RoR vaut le détour.
En partant du principe que vous avez Ruby d’installer sur votre machine, l’installation de RoR est aussi simple que :
gem install rails
Une fois cela fait, il suffit d’une autre ligne de commande pour créer un projet RoR :
rails new my_project --skip-active-record --skip-test-unit
Dans le cas présent, je n’installe pas ce qui concerne les bases de données si les tests unitaires.
Pour voir le résultat il suffit de se déplacer dans le dossier my_project et de lancer le serveur embarqué :
cd my_project/ rails server
Rendez-vous sur http://localhost:3000/ afin de voir la page par défaut.
Passons à l’ajout de la gestion de MongoDB à Mongoid travers la gem et des gem de tests. Pour cela il faut editer le fichier Gemfile et y rajouter:
gem 'mongoid', github: 'mongoid/mongoid' gem 'bson_ext' group :test do gem "rspec-rails" gem 'cucumber-rails', :require => false gem 'database_cleaner' end
Avec la sortie récente de RoR 4, la gem mongoid n’est pas encore totalement compatible, dans notre cas nous disons à bundler d’aller la chercher sur github.
Un petit bundle install afin d’installer les nouvelles gem et nous voila prêt pour la suite.
Premièrement, il faut configurer mongoid avec :
rails generate mongoid:config
Afin de générer les fichiers pour les tests, lançons les 2 commandes suivantes :
rails generate rspec:install rails generate cucumber:install
Avant d’aller plus loin, il faut désactiver quelques éléments prévus pour des applications avec une base de données relationnelle.
Dans le fichier spec/spec_helper.rb commentez les lignes :
config.fixture_path = "#{::Rails.root}/spec/fixtures" config.use_transactional_fixtures = true
Pour finir dans le fichier features/support/env.rb changez DatabaseCleaner.strategy = :transaction par DatabaseCleaner.strategy = :truncation .
Passons aux choses sérieuses avec la génération d’un model et du CRUD associé. Comme souvent, une ligne de commande suffit :
rails generate scaffold post name:string description:text
Je vous laisse découvrir ce qui fonctionne en allant sur : http://localhost:3000/posts