I. Introduction▲
Après avoir utilisé TextMate et SublimeText2, j'ai décidé de tester RubyMine. Contrairement aux deux premiers cités, RubyMine est un IDE par conséquent un certain nombre d'outils y sont intégrés tels que Git (ou un autre gestionnaire de sources), la gestion de la base de données…
RubyMine est disponible sous Mac OS X, Linux et Windows donc quel que soit votre OS vous pouvez l'utiliser. Il est par contre indispensable d'avoir auparavant installé Ruby (1.8.6 minimum). Le coût de licence n'est pas négligeable mais si l'utilisation justifie le coût alors pourquoi pas.
Nous allons commencer à utiliser RubyMine afin de voir ce qu'il est possible de faire avec puis nous verrons les points positifs et négatifs de celui-ci.
II. La configuration▲
Lors de la première utilisation de RubyMine, il vous est demandé quel système de raccourcis clavier vous souhaitez utiliser (TextMate, Emacs, …). Ceci vous sera utile si vous êtes habitué à un éditeur de texte et donc à son système de raccourcis. Ce point me semble intéressant pour des utilisateurs habitués à des systèmes autres que celui-ci et souhaitant changer sans perdre tous leurs repères.
Ensuite, l'IDE vous offre un nombre incalculable de possibilités de personnalisation afin de trouver ce qui vous convient le mieux que ce soit en termes de couleurs, de plugins, de raccourcis…
Même s'il y a un nombre conséquent de raccourcis clavier créés par défaut, je conseille tout de même de les revoir, car certains sont manquants d'après moi (c'est un avis subjectif car cela dépend bien sûr des besoins de chacun). En effet, il n'y a, par défaut, pas de raccourcis pour lancer une tâche Capistrano ou Rake ou bien pour ouvrir la console Rails. C'est donc à chacun de voir quels raccourcis semblent les plus importants.
Une liste de plugins pré-installés est disponible dans la fenêtre de configuration de RubyMine mais il est très simple d'en installer de nouveaux, soit depuis le dépôt (il en existe un par défaut mais il est possible d'en ajouter un ou plusieurs), soit en installant un plugin présent sur votre poste.
Pour les habitués de Vim, il existe un plugin ideavim qui permet d'utiliser par exemple les macros. Il est également possible d'utiliser les bundles TextMate si besoin.
Les possibilités de configuration vous permettent donc d'avoir un IDE qui répond à vos attentes. Il faut y passer un peu de temps au départ mais l'investissement sera rentabilisé par la suite (comme pour tout changement d'outil, il est nécessaire de se familiariser et de trouver ses marques).
III. L'utilisation▲
Afin de tester RubyMine, j'ai considéré deux cas d'utilisations, le premier consiste à créer un nouveau projet Rails et le second, à reprendre un projet Rails existant.
III-A. Nouveaux projets▲
Depuis le menu principal de RubyMine, il est possible de créer un nouveau projet. Le premier choix consiste à sélectionner le type de projet (répertoire vide, projet Rails, projet RubyMotion,…) ainsi que le chemin du projet à créer.
Une fois cela effectué, une interface graphique permet de choisir la version de Ruby (parmi les versions installées sur le poste), la version de Rails mais aussi le système de gestion de base de données et la librairie JavaScript à utiliser.
Il est également possible de sélectionner un template d'application Rails pour créer l'application. Les options de bases utilisées lors de la création d'un nouveau projet en ligne de commande sont donc disponibles dans RubyMine.
Une fois l'application créée, il est possible de modifier la version de Ruby depuis les préférences du projet.
Attention, si vous utilisez rbenv, lors de l'ouverture de l'IDE, le répertoire ~/.rbenv est scanné afin de détecter les versions de Ruby disponibles donc si elles ne sont pas présentes dans ce répertoire, elles ne seront pas disponibles dans l'IDE.
Il vous sera néanmoins possible de les ajouter à la main par la suite depuis le panneau Ruby SDK and Gems de la configuration de RubyMine.
Pour ce qui est de l'application Rails en elle-même, il n'y a aucune différence entre la création depuis l'IDE et depuis la ligne de commande.
III-B. Projets existants▲
Il est possible depuis RubyMine d'ouvrir des projets déjà existants (sur votre machine ou dans un dépôt Git par exemple).
Pour un projet existant sur votre machine, rien de plus simple, il suffit, depuis le menu principal, de sélectionner le répertoire du projet (File > Open Directory).
Pour un projet distant utilisant un gestionnaire de sources, il vous faut passer par le menu VCS puis cliquer sur Checkout from version control afin de pouvoir ensuite sélectionner le gestionnaire de sources utilisé puis de spécifier l'URL du dépôt ainsi que le répertoire de la machine où sera copié le projet et son nom.
III-C. Gestion de sources▲
La présence d'une interface graphique pour le gestionnaire de sources peut aider les plus réfractaires. En effet, pour les personnes n'étant pas adeptes des lignes de commandes, le fait de pouvoir consulter les modifications effectuées et faire toutes les manipulations nécessaires (pull, push, commit,…) dans une interface graphique depuis l'IDE est un plus.
Il n'est donc plus nécessaire d'ouvrir un terminal pour la gestion de sources puisque c'est intégré dans l'IDE. Cependant, je ne trouve pas l'interface graphique très claire (les boutons ne sont pas explicites).
Des cas d'utilisation de fonctionnalités plus précises sont également à voir. En effet, certaines d'entre elles semblent intéressantes, comme le fait de pouvoir accéder à la base de données directement dans l'IDE par exemple.
III-D. Bases de données▲
L'un des points plutôt agréable de RubyMine est la gestion de la base de données directement dans l'IDE.
Pour un projet Rails par exemple, si vous avez votre fichier config/database.yml qui spécifie les bases de données utilisées, celles-ci sont listées dans l'onglet Database et vous pouvez les consulter directement.
Pour cela, il faut les synchroniser (menu déroulant disponible lors d'un clic droit sur l'une des bases) avec RubyMine. Une fois ceci effectué, vous pouvez, comme si vous étiez dans un une application de gestion de BDD, consulter la structure et le contenu de votre base.
III-E. Les tests▲
L'interface concernant les tests présente dans RubyMine est assez claire. Lors de l'exécution de ces derniers, on retrouve la liste de tous les tests effectués et pour chacun d'eux une icône permet de savoir si oui ou non il est passé avec succès.
Le fait de double-cliquer sur un test nous amène directement aux lignes de code correspondantes ce qui est appréciable afin de voir le code du test sans avoir à rechercher le fichier correspondant.
De plus, le temps d'exécution de chaque test est indiqué dans la partie droite de l'interface dédiée aux tests.
Il est également possible d'obtenir le pourcentage de couverture du code lors de l'exécution des tests.
Un autre aspect intéressant dans l'exécution des tests est le fait de pouvoir les relancer automatiquement dès qu'un fichier est enregistré.
C'est en fait le même principe que l'on peut retrouver si l'on utilise guard et spork comme indiqué dans notre article concernant la stack de tests avec Rails.
Il existe bien sûr d'autres fonctionnalités mais je ne vais pas ici toutes les citer. C'est à chacun, en fonction de ses besoins, de voir ce qui paraît intéressant ou non.
IV. Avantages et inconvénients▲
Le principal intérêt d'un IDE est de ne plus avoir besoin d'autres outils en dehors de celui-ci pour développer. Avec RubyMine, le fait d'avoir le gestionnaire de sources, la gestion de la base de données, l'accès à la console et bien sûr l'éditeur de texte permet de se passer d'autres outils.
En plus des fonctionnalités citées ci-dessus, d'autres sont intéressantes à utiliser également comme la création de Gist (sur un fichier complet ou uniquement sur une sélection), un outil pour voir les différences entre différentes version d'un fichier ou l'intégration de Capistrano pour le déploiement.
L'autocomplétion proposée par RubyMine est complète et bien utile lorsque l'on cherche la signature ou le nom d'une méthode.
C'est également l'avantage d'un IDE par rapport à un éditeur de texte classique (même si certains éditeurs permettent d'avoir la complétion également).
Cela permet d'avoir la liste des méthodes existantes et également la documentation correspondante. C'est un point vraiment utile lorsque l'on débute sur un nouveau langage ou un nouveau framework par exemple. En ce sens, le support de RubyMotion est un avantage par exemple.
D'autres points peuvent paraître intéressants au premier abord mais soit il y a des bogues, soit cela ne correspond pas à ce que j'attendais en voyant le libellé.
Par exemple, RubyMine affiche directement dans le code les chaînes traduites via I18n plutôt que d'afficher l'appel à ce dernier. En effet, dans votre éditeur de texte habituel vous visualisez dans le code l'appel suivant :
I18n.t(
"views.title"
)
Dans l'IDE, ce n'est pas ce morceau de code qui est affiché mais la chaîne traduite et c'est uniquement au survol de celle-ci que l'on peut voir le code correspondant à l'appel à I18n :
Mon super
titre
# au survol => I18n.t("views.title")
Ce dernier point peut paraître perturbant au départ, car si l'on ne fait pas attention on peut croire que la chaîne de caractère est écrite en dur dans le code alors qu'elle est bien traduite (il y a une différence de coloration entre les chaînes en dur et les chaînes traduites affichées).
Le principal souci de cette fonctionnalité n'est sans doute pas le fait que cela puisse perturber l'utilisateur mais plutôt qu'elle ne fonctionne pas tout le temps. En effet, parfois, le code d'appel à I18n reste affiché (plutôt que le chaîne traduite) avec un message indiquant que la clé indiquée ne correspond à aucune traduction et pourtant la traduction est bien présente.
Autre point, l'installation de gems via une interface graphique. En effet, il est possible depuis le panneau « Ruby SDK and Gems » de l'interface de configuration de votre projet (ou depuis le menu Tools > Quick install gems) d'ajouter ou de mettre à jour des gems.
Mais là encore, le comportement n'est pas optimal. La gem n'est pas ajoutée au Gemfile. Elle est disponible de façon globale sur votre machine (pour la version de Ruby utilisée), elle est présente lorsque vous lancer la commande gem list mais n'est pas spécifiée dans le projet, ce qui sera donc problématique lors du déploiement.
D'autres points concernant l'utilisation de RubyMine me dérangent également. L'IDE crée des fichiers (dans le répertoire /.idea du projet) ce que je trouve toujours gênant puisqu'ils ne sont pas utilisés pour le développement en lui-même.
Il est cependant simple de les exclure des fichiers à commiter (dans le panneau où l'on voit les fichiers qui ont été modifiés, il y a un bouton pour ajouter des fichiers à ignorer).
Une fonctionnalité à laquelle je me suis habitué avec SublimeText2 est l'ouverture du fichier (qui est en fait un aperçu si l'on ne modifie pas ce dernier) lors du simple clic sur ce dernier. Avec RubyMine, il est obligatoire d'effectuer un double clic pour ouvrir un fichier.
V. Extrait des commentaires du blog de Synbioz▲
Cet article a fait l'objet de divers commentaires sur le blog de Synbioz, voici ceux que nous avons jugé les plus intéressants.
Par rivsc :
Hello l'équipe Synbioz, j'utilise RubyMine depuis un peu plus d'un an (depuis l'arrêt du support de rails par NetBeans), je le trouve vraiment bien (peut-être un peu lent sur des petites configs sous linux). L'intérêt majeur d'un IDE c'est le débogage visuel et ça marche bien, très bien. La sélection verticale est prodigieuse (je n'ai jamais réellement réussi à m'en servir sur NetBeans). L'intégration des 'normes' du ruby style guide est top (dans la marge RM mets une bulle pour dire qu'il vaut mieux faire comme ci ou comme ça).
Pour l'intégration :
- dans la marge des fichiers CSS, les couleurs s'affichent ;
- aperçu des images dans l'IDE ;
- complétion auto des classes CSS dans les vues HTML (RubyMine lit les fichiers CSS).
En ce qui me concerne, pour capistrano, rake, rails, bundler, je continue de les utiliser dans le terminal.
Sinon l'interface de SublimeText2 est top mais la reconnaissance du code ruby bof. Mais bon c'est plus orienté intégration du développement.
Beaucoup de petit plus qui font que c'est très agréable à utiliser.
Par Adel :
Merci pour le test.
En ce qui me concerne, étant débutant, l'apport du debug apporte un réel plus et facilite l'intégration de l'ide.
Par Nicolas (Synbioz) :
Merci Alex pour ce test !
De mon coté j'ai très rapidement survolé PyCharm, l'équivalent Python/Django de RubyMine. Il est certainement moins mature au vu des numéros de versions : 2.7 pour PyCharm et 5.0 pour RubyMine. Cependant je voulais ajouter que la documentation est très agréable à parcourir car très bien organisée. Elle présente bien les nombreuses fonctionnalités : refactoring, bookmarking, auto-complétion, snippets, etc. Le comportement de l'interface est configurable ce qui permet en désactivant et en masquant certains éléments (auto-complétion automatique, barres d'outils, arborescence des fichiers, etc) de se retrouver avec un éditeur très épuré et distraction-free... Utilisateur de vim, j'ai trouvé le plugin IdeaVim indispensable. Bien qu'il soit impossible de reproduire l'intégralité de vim, beaucoup des commandes courantes sont présentes et permettent de ne pas désespérer tout de suite... Ce qui est dommage avec PyCharm / RubyMine c'est que pour réaliser un plugin il faut s'accrocher puisque c'est un lourd projet Java qu'il faut mettre en place, contrairement à d'autres éditeurs comme ST.
VI. Conclusion et remerciements▲
RubyMine est donc un IDE complet. Pour avoir utilisé Eclipse un temps, je préfère sans aucun doute RubyMine (à voir si depuis Eclipse a évolué).
Cependant, entre un éditeur de texte tel que SublimeText2 et un IDE je ne vois pas de raison évidente de changer à l'heure actuelle.
Il est clair que le fait de regrouper tous les outils dans une seule application est un avantage mais encore faut-il pouvoir faire tout ce que l'on souhaite sans problème.
Pour une personne habituée à l'utilisation d'un IDE ou qui ne souhaite pas utiliser (ou le moins possible) la ligne de commandes, je pense que RubyMine est une solution viable.
Pour moi qui suis habitué à un éditeur de texte classique combiné à un terminal et les différents autres outils nécessaires (application pour les bases de données…), je n'en ressens pas l'intérêt.
Pour les personnes qui utilisent RubyMine, n'hésitez pas à me faire part de vos retours. Je suis intéressé par l'avis de développeurs qui utilisent cet IDE tous les jours.
Merci à l'équipe Synbioz pour la rédaction de ce test. N'hésitez pas à poster aussi vos commentaires sur l'article de leur blog.
Nous tenons à remercier _Max_ pour sa relecture attentive de cet article.