1893 avis : 5/5 ⭐️⭐️⭐️⭐️⭐️

Wordpress développement

Catégorie : Ruby on Rails

devise authentification for rails
Ruby on Rails
alexis-stephan

Installer Devise sur une app rails (authentification)

Qu’est ce que Devise ? Devise est une gem (librairie ruby) disponible dans la ruby gem, qui vous permet d’ajouter l’authentification et l’enregistrement d’utilisateurs sur votre application. Il est primordiale d’avoir Devise ! En effet, Devise vous permettra d’avoir accès a de nouvelles méthodes. Nous avons alors comme nouvelles notions le current_user, if user_sign_in? etc. Application rails basique Pour créer notre application afin de faire un test sur l’authentification, je suis parti sur un template basique de rails : Pour les élèves du wagon vous avez un template prédéfini pour vous : (accessible que si vous êtes inscrit à la formation de développement web). Configurer notre application avant l’installation de devise Nous allons dans un premier temps, lancer la compilation de nos gems, lancer la création de notre base de donnée. Pour cela lancer dans le terminale : Lancer un serveur rails + webpack (pour compiler le javascript) Avant de pouvoir accéder à notre application rails (ne contenant aucun controller ni model), ne pas oublier de lancer le serveur webpack : Prenons connaissance de notre application Premièrement nous allons regarder le fichier route et aller sur le localhost afin de voir la page générée par rails. Générer un controller pages pour afficher une page Nous allons générer un controller avec une route par défaut afin d’avoir une page d’accueil personnalisée avant l’installation de DEVISE sur notre application rails. Pour cela lancer la commande : Une fois notre commande lancée, nous devons modifier le fichier route par : Nous crééons ensuite une méthode vide dans le fichier controlleur pages : Nous devons ensuite créer un fichier view : index.html.erb : En relançant notre serveur voici ce que nous devons voir : Installer devise Premièrement nous allons aller dans le gemfile, et ajouter la ligne de code suivante : Puis nous allons lancer l’installation des gems sur notre application rails. Pour cela nous connaissons la commande : Configuration automatiquement devise Pour lancer la configuration par défaut de devise, il nous suffit de lancer la commande suivante dans le terminale : Il nous suffit maintenant de suivre les 4 étapes données par devise : Vérifier que votre fichier developement.rb contient bien : (sinon l’ajouter manuellement) Ajouter la ligne de configuration pour la production : Rendez-vous dans le fichier application.html.erb et les ajouter dans le body Adapter le controller Pour commencer nous allons modifier le controller application en ajoutant cette ligne de code : Configurer les views par défaut de devise (automatiquement) Afin de générer automatiquement les views de devise, nous devons lancer la commande : Dernière étape, ajouter le model user à votre application Pour ajouter la table User afin que devise puisse fonctionner sur votre application rails, vous devez lancer la commande : Important !! Activer les turbos devise sur rails 7 Dans le fichier : config/initializers/devise.rb, ajouter le code ci-dessous : Vérifier que Devise est bien installé sur votre application Pour vérifier que la configuration de devise s’est bien déroulée, je vous invite à tester vos routes : localhost:3000/users/sign_in ainsi que la route localhost:3000/users/sign_up Pour aller plus loin (optionnel) Devise est un outil très puissant permettant également d’autoriser ou non l’accès à vos pages en étant connecté ou non. Pour n’autoriser que les utilisateurs connectés sur votre application. Vous devrez ainsi, vous rendre dans le fichier ApplicationController et ajouter cette ligne de code : Autoriser certaine page de votre application rails sans connection Il est très commun de trouver sur un site web, la page d’accueil (home page), libre d’accès sans devoir vous connecter. Pour cela il faudra ajouter une autorisation à chaque page que vous souhaitez rendre disponible à vos utilisateurs non connecté. Afin de réaliser cela, ajouter dans le controller concernée (pour notre exemple, la page d’accueil) : Comme l’indique l’image nous avons spécifier à notre controller pages, d’exclure la vérification de l’authentification d’un utilisateur via devise uniquement pour la méthode et le fichier index (soit notre page d’accueil). Vous pouvez bien sûr inclure plus de méthode et ainsi ajouter cette ligne sur les contrôleurs de votre choix. Lien du repo github concerné : https://github.com/alexisjps/demo-install-devise

Ruby on Rails
alexis-stephan

Ajouter Cloudinary sur une application rails existante

Tutoriel en vidéo Avant de commencer Voici le schema de notre base de donnée. Nous souhaitons attacher des images à notre table lists Et non, pas besoin de migration 😉 Modifier le model list pour ajouter la méthode picture Aller dans le model concerné (en l’occurence pour notre exemple : /models/list.rb) Puis nous allons ajouter en dessous de la classe : Bien mettre la nouvelle ligne en dessous de la class ⚠️ Installer cloudinary Premièrement nous allons ajouter la gem Cloudinary à notre gemfile. La seule spécificité est de l’ajouter au dessus du groupe de développement et de production dans le gemfile. N’oubliez pas de lancer la commande dans le terminale : Ajouter la clef API Cloudinary Afin de sécuriser votre clef API cloudinary, nous allons créer un fichier .env la contenant. Pour cela lancer à la racine de votre application : La commande echo ‘.env……’ vous permet d’ajouter une ligne dans le fichier .gitignore afin de lui spécifier de ne pas pusher votre fichier .env sur github. Si votre fichier .env est envoyé sur github, tout le monde a accès à cette dernière. Ajouter votre clef cloudinary Pour cela, rendez-vous dans le fichier .env créé ensemble. Puis aller sur cloudinary et copier via dashboard votre secret API. Voir capture : Copier / coller la clef (ctrl c / ctrl v ou cmd c / cmd v pour les macs) Active record pour ajouter la relation des images à la base de donnée Dernière ligne droite avant de pouvoir envoyer / afficher vos images utilisateur sur votre application Rails. Il vous faut installer active record. Pour cela on va lancer les commandes : Un fichier de migration a été créé avec les tables active record. Nous avons besoin de lancer le fameux rails db:migrate pour mettre à jour notre schema de base de donnée. Voici votre nouveau schema.rb : Adapter notre stockage de fichier sur notre application rails Pour ce faire, rendez-vous dans le fichier storage.yml (dans le dossier config de votre application ruby on rails) : Modifier le comportement du fichier developement Nous devons maintenant indiquer au fichier developement.rb le comportement de stockage de nos images. Nous allons chercher la ligne : Nous allons modifier la valeur = :developement par :cloudinary Mettre à jour le fichier test et production Il faut effectuer la même manip pour le fichier production.rb : Ajouter un champ d’upload d’image Pour donner la possibilité à l’utilisateur de pouvoir uploader une image lors de la création de son compte par exemple, où pour un appartement à mettre en location en second exemple. Il faut modifier le simple_form en ajoutant un champ file. Voici le résultat côté front : Adapter le controller pour accepter le nouveau champ Comme vous le savez, lors de la création d’un élément (user, post, flat ou tout autre object ruby) nous avons définis par sécurité des strongs params permettant ainsi aux utilisateurs de créer / modifier uniquement les valeurs données dans le controller. Ne pas oubliez que tout ce qu’on expose en front peut être voler / modifier en inspecteur d’élément > éditer en html. Un utilisateur peut facilement ajouter des champs qui ne sont pas prévus. Il nous faut alors aller dans le contrôleur lié au model appartement ou celui qui peut désormais recevoir des images pour lui ajouter un complément de code : Et voilà ! Nous pouvons tester notre application maintenant Remplir le formulaire en passant une image de votre choix sur votre ordinateur. Puis, si tout est bien configuré, vous devriez avoir un dossier développement sur votre compte Cloudinary contenant toutes vos images uploadées : Afficher votre image : Pour afficher votre image, vous pouvez placer la balise cl_image_tag sur la show concernée / index : Le @list.photo.key permet de récupérer la clef de l’image pour votre variable d’instance. Car la balise cl_image_tag prend une string contenant la clef Cloudinary de l’image. Nous souhaitons afficher les images dynamiquement en fonction de l’upload de l’utilisateur, et non mettre en brut notre clef Cloudinary pour l’image Envoyer des images sur votre serveur de production Pour configurer Cloudinary sur Heroku ou votre environnement de production, n’oubliez pas de lancer la commande dans votre terminale : heroku config:set CLOUDINARY_URL=PASSERLACLEFAPI

commandes github & heroku
Ruby on Rails
alexis-stephan

Commandes github/heroku Antisèche

Commandes Github Créer un repo sur github (lead dev) : Lister toutes les branches : Créer une branche Pusher votre branch : Retourner sur la branch master : Récupérer du code qui a été mergé sur la branch master : Commandes Heroku Avant de déployer sur heroku (déploiement par le lead dev) Créer un compte sur : https://dashboard.heroku.com/login Créer l’application sur heroku en terminale (pas sur votre compte heroku) Créer une application sur heroku : Pushez sur heroku Attention bien tout mettre à jour concernant votre DB de production !!! 🙂 Pensez à bien ajouter via votre dashboard vos collaborators : Pour tous les collaborators ajoutés, il faut ajouter l’app heroku à votre local app Toutes les commandes que vous pouvez faire sur heroku terminale :

Ruby on Rails
alexis-stephan

Créer une application Rails (commandes basiques)

Lancer une application avec le template de base (postgres + webpack js + feuille de style scss) Petit warning ⚠️ bien aller dans le dossier code avant de lancer la commande : cd code/ Pour savoir quels dossiers sont à ta dispo : ls Pour créer l’application rails voici la commande : Pour les élèves du wagon vous avez un template prédéfini pour vous : (accessible que si vous êtes inscrit à la formation de développement web). Configurer l’application avant de commencer : Dernière étape : Créer le dossier github Créer un dossier github : Envoyer le code sur github : Avant de commencer à coder 👨‍💻 Dessiner la Base de donnée de l’application db.lewagon.com Schéma de DB pour un clone airbnb en rails Commencer à coder Créer une base de donnée Créer le model sur rails rails g = rails génère model mettre le nom du modèle puis les colonnes Vérifier le fichier générer qui se trouve dans db/migrate Si c’est ok ✅ : Lancer la migration avec : Checker le schema.rb Optionnel (en cas d’erreur sur une migration effectuée) Générer une migration (exemple : pour modifier une colonne) Voici toutes les possibilités de migration pour modifier le schema.rb : Ne pas oublier de lancer la migration 🙂  Créer le controller : Pour créer un controller en rails voici la commande : Créer les routes en rails Il nous manque l’action dans le controller. Voici l’erreur que tu auras sur le serveur localhost : Il faut donc créer la méthode dans le controller (méthode index) Erreur : (il manque la vue) template = vue Créer la vue dans le dossier : View Bien nommer la vue comme le nom de la méthode du controller Créer des données pour la base de donnée Fichier seeds Avant de créer de la donnée checker le schema pour voir les colonnes de notre object ruby Ex : Une fois la seed finie tu vas devoir lancer la commande qui va jouer les seeds pour les ajouter à la base de donnée : ps : tu peux ajouter des puts pour l’afficher dans le terminale (et savoir quand les seeds ont pétés si jamais tu as une erreur) : Vérifier que notre donnée a bien stockée les datas Pour checker la base de donnée et voir les données dedans on peut lancer la commande Puis demander d’afficher dans la console tous les appartements : Afficher toutes les données créées dans la view : Ajouter une variable d’instance (qui peut être appelée dans tous les fichiers) ex : Afficher les données dans la vue : Pour pouvoir afficher un appartement précis le lien doit être /flats/:id Routing Advanced : Modifier le fichier route pour accéder à la show d’un appartement spécifique : On doit ajouter la méthode show et bien sûr une vue aussi 😉 dans le controller : et dans le fichier view : Un doute sur les données que tu peux afficher de la classe du model flat ? Va dans le schema.rb tu as toutes les colonnes de la table flats 🙂 Parcours utilisateur friendly Ajouter un lien vers la show d’un appartement : Encore mieux mettre le nom dans le lien : Créer un nouvel appartement Pour le new on doit initialiser la classe (du model ruby : flat.rb) : Pour le create : Ne pas oublier d’ajouter les strongs params qui sont en méthodes privées du controller flats 😉 Dernière étape pour le create il faut ajouter un lien dans une view index.html.erb par exemple Repo du CRUD entier sur github : https://github.com/alexisjps/rails-crud-lecture/blob/main/app/controllers/restaurants_controller.rb Voir aussi :