window.pipedriveLeadboosterConfig = { base : 'leadbooster-chat.pipedrive.com', companyId : 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version : 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster existe déjà') } else { w.LeadBooster = { q : [], on : function (n, h) { this.q.push({ t : 'o', n : n, h : h }) }, trigger : function (n) { this.q.push({ t : 't', n : n }) }, } } })() Une application Ruby simple à partir de zéro avec Active Record - The Codest
The Codest
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Industries
    • Fintech et banque
    • E-commerce
    • Adtech
    • Santé (Healthtech)
    • Fabrication
    • Logistique
    • Automobile
    • IOT
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
  • A propos de nous
  • Services
    • Développement de logiciels
      • Développement frontal
      • Développement backend
    • Staff Augmentation
      • Développeurs frontaux
      • Développeurs backend
      • Ingénieurs des données
      • Ingénieurs en informatique dématérialisée
      • Ingénieurs AQ
      • Autres
    • Conseil consultatif
      • Audit et conseil
  • Valeur pour
    • CEO
    • CTO
    • Gestionnaire des livraisons
  • Notre équipe
  • Études de cas
  • Savoir comment
    • Blog
    • Rencontres
    • Webinaires
    • Ressources
Carrières Prendre contact
Flèche arrière RETOUR
2021-07-07
Développement de logiciels

Une application Ruby simple à partir de zéro avec Active Record

The Codest

Damian Watroba

Software Engineer

MVC est un modèle de conception qui divise les responsabilités d'une application afin d'en faciliter le déplacement. Rails suit ce modèle de conception par convention.

J'aime travailler avec Rails parce que je peux facilement et rapidement créer une application qui fonctionne et la montrer au monde entier ou seulement à mes amis. Cependant, il existe des types d'applications qui n'ont pas besoin d'un cadre aussi large que le Rails et toutes ses fonctionnalités.

Il se peut que notre application n'ait besoin que du modèle M (Model) de tout le modèle MVC. Modèle-contrôleur. Cela vaut-il la peine de créer une projet en Rails si nous savons que la partie V-C (View-Controller) ne sera pas nécessaire ?

Il est bon de savoir que Registre actif Active Model, Action Pack et Action View, qui sont responsables de MVC, peuvent être utilisés indépendamment en dehors de MVC. Rails. Cela nous permet de créer un simple Application Ruby qui dispose d'une connexion à la base de données et de la développer sans l'inutile code et les bibliothèques que nous obtiendrions dans un paquet en lançant la commande rails new.

J'ai décrit étape par étape comment y parvenir et vous pouvez trouver le code complet sur GitHub. Le lien se trouve au bas de cet article. 

Structure

Pour démarrer notre projet, nous n'avons pas besoin de grand-chose. Commençons par créer un fichier Fichier de gemmes où nous ajoutons les gemmes dont nous avons besoin pour travailler sur l'application, ainsi que la version de Rubis que nous utiliserons.

 cat Gemfile

# frozen_string_literal : true

source 'https://rubygems.org'

ruby '2.7.2'

Une option README.md est de décrire comment fonctionne notre application et comment continuer à y travailler, à la fois pour nous-mêmes et pour d'autres développeurs qui voudront développer le projet avec nous à l'avenir.

cat README.md

Application #

A FAIRE : Effacez ce texte et celui qui précède, et décrivez votre application.

application avec application.rb qui sera responsable de la configuration et du chargement des bibliothèques et des fichiers que nous ajouterons dans notre application. N'oubliez pas de lancer bundle install pour générer le Gemfile.lock. La structure de notre application à ce stade devrait ressembler à ceci :

 arbre
 .
 ├── Gemfile
 ├── Gemfile.lock
 ├── README.md
 └── app
     └── application.rb

Base de données

Une fois cette structure préparée, nous pouvons réfléchir au moteur de base de données à choisir et à configurer. Pour cet article, j'ai choisi PostgresQL, avec lequel j'ai le plus d'expérience. Il peut également s'agir de MySQL ou de SQlite3, ou de tout autre moteur fonctionnant avec Registre actif. Lors du choix d'une technologie, il est bon de se laisser guider par l'objectif de l'application, ce à quoi elle servira et quel sera son but. 

Pour une configuration rapide et simple de la base de données, j'ai utilisé docker et docker-compose. Je ne veux pas m'étendre sur la configuration de ces outils, leurs avantages et leurs inconvénients, mais si vous n'avez jamais utilisé docker auparavant, je vous renvoie à la documentation officielle de Docker et Docker Compose pour plus d'informations.

# docker-compose.yml

version : '3.7'
services :
  postgresql :
    image : postgres:12.0-alpine
    ports :
- 5432:5432
    environnement :
- PGDATA=/postgresql
- POSTGRESPASSWORD=postgres
- POSTGRESUSER=postgres
    volumes :
- db-volume:/postgresql
volumes :
  db-volume :

Nous devrons également ajouter à notre Fichier de gemmes

 gem 'pg'

et à notre application.rb fichier

# app/application.rb

require 'pg'

module Application

  classe Error < StandardError ; end

# Votre code va ici...

fin

Migrations autonomes, Rake

L'étape suivante de la configuration de notre application consiste à ajouter l'élément migrations_solitaires et râteau ce qui nous permettra de gérer nos migrations comme dans Rails et d'accéder aux commandes rake db :. 

  1. Mise à jour Fichier de gemmes avec les gemmes nécessaires, et faire un bundle install
gemme # utilisée dans des applications non-rails et non-ruby

gem 'standalone_migrations'

# standalone_migrations a besoin de rake pour pouvoir créer des migrations et les exécuter, comme dans Rails

gem 'rake'

# Gem nécessaire pour charger les variables d'environnement

gem 'dotenv'
  1. Ajoutons un Fichier Rake à notre projet dans le répertoire racine, où nous chargerons dotenv et migrations_solitaires que nous avons ajouté plus tôt 
# frozen_string_literal : true

nécessite 'dotenv'

Dotenv.load

nécessite 'standalone_migrations'

StandaloneMigrations::Tasks.load_tasks

Avec la Fichier Rake configuré de cette manière, nous pouvons vérifier si notre râteau fonctionne en utilisant le rake -T qui devrait renvoyer une liste des commandes disponibles dans notre application.

application ruby
  1. Avant rake db:createCependant, nous avons encore besoin d'un fichier de configuration dans notre projet pour nous connecter à l'instance de Postgres. Pour ce faire, nous devons créer un répertoire db ainsi qu'un fichier de configuration config.yml qui devrait ressembler au fichier ci-dessous :
# db/config.yml

default : &default

  adaptateur : postgresql

  encodage : unicode

  pool : 

  base de données : 

  nom d'utilisateur : 

  mot de passe : 

  host : 

  port : 

développement :

  << : *défaut

test :

  << : *défaut

staging :

  << : *défaut

production :

  << : *défaut

Comme vous pouvez le voir, j'ai utilisé des variables d'environnement pour configurer la connexion à notre Postgres, où nous conserverons des données sensibles qui ne devraient pas se trouver dans le référentiel. Pour cela, j'ai utilisé la variable d'environnement gem dotenvqui a également été ajouté dans la Fichier Rake ainsi que migrations_solitaires. Si nous utilisons Git pour gérer le contrôle de version de notre application, n'oublions pas d'ajouter un fichier .gitignore dans lequel nous désactiverons la possibilité de suivre le fichier .env de notre projet.

 # .gitignore
.env*
!.env.exemple

et ajouter un.env contenant les ENV correctement configurés

# .env

DATABASE_NAME="développement"

DATABASE_USER="postgres"

DATABASE_PASSWORD="postgres"

DATABASE_HOST="localhost"

DATABASE_PORT="5432"
  1. À ce stade, nous devrions être en mesure d'exécuter le programme rake db:create qui créera la base de données

    Application web Ruby

  2. Essayons d'ajouter une nouvelle migration via rake db:new_migration name=où nous créons un postes table avec un :titre colonne

    Application web Rails

# frozen_string_literal : true

class CreatePosts < ActiveRecord::Migration[6.0]

  def change

    create_table :posts do |t|

      t.string :title

    end

  end

fin
Application web Ruby on Rails

Vous remarquerez que le db/migrate a été automatiquement ajouté et schema.rb a été créé après une migration réussie. Actuellement, la structure de notre projet se présente comme suit :

 arbre
.
├── Gemfile
├── Gemfile.lock
├── README.md
├── Rakefile
├── .gitignore
├── .env.example
├── app
│ └── application.rb
├── db
│ ├── config.yml
│ ├─── migrate
│ │ └── 20210504135128_create_posts.rb
│ └── schema.rb
└── docker-compose.yml

Registre actif

Enfin, une autre étape de la création de notre application consiste à ajouter les éléments suivants enregistrement actif et sa configuration. Pour cela, nous devrons mettre à jour notre Gemfile avec 3 gems supplémentaires :

gem "activerecord
gem 'erb'
gem 'yaml'

Pourquoi nous ajoutons erb et ymal est expliqué ci-dessous dans les commentaires. L'ensemble des enregistrement_actif se trouve dans le fichier app/application.rb fichier.

Voyons ce qui se passe ici, un par un :

# frozen_string_literal : true

# Si nous voulons pouvoir exécuter l'application dans différents environnements,
# par exemple, test ou production, il est bon de définir la valeur ENVIRONMENT
# au début, qui provient de la variable d'environnement
# ou `development` par défaut.

ENV['ENVIRONNEMENT'] ||= 'développement'

# Pour utiliser les gemmes ajoutées, nous devons les charger en utilisant la méthode Kernel#require,
# qui charge le fichier ou la bibliothèque passé(e) en paramètre

require 'pg'
requiert 'active_record'
requiert 'dotenv'
requiert 'yaml'
requiert 'erb'

# Par défaut, Dotenv.load pour le chargement des variables d'environnement s'adresse au fichier `.env`.
# au fichier `.env`, donc si nous voulons utiliser d'autres environnements, cela vaut la peine de l'étendre à la méthode ci-dessous, qui va d'abord, pour un fichier `.env`, charger les variables d'environnement.
# l'étendre à la méthode ci-dessous, qui va d'abord, pour un ensemble de développement
# recherche un fichier se terminant par `.env.development.local`,
# puis `.env.development` et enfin `.env`.

Dotenv.load(".env.#{ENV.fetch('ENVIRONMENT')}.local", ".env.#{ENV.fetch('ENVIRONMENT')}", '.env')

# Méthode nécessaire pour charger les paramètres de la base de données
def db_configuration
  # La méthode ci-dessous renvoie le chemin vers le fichier contenant notre configuration
  db_configuration_file_path = File.join(File.expand_path('..', __dir__), 'db', 'config.yml')

  # En ayant le chemin du fichier, nous pouvons lire ses valeurs. Comme le fichier config.yml
  # contient des variables d'environnement et, comme vous l'avez peut-être remarqué,
  # la syntaxe erb , nous devons également utiliser la gemme erb. Sans cela,
  # les valeurs des variables ne seront pas lues correctement et activerecord
  # ne pourra pas se connecter à postgres.La méthode suivante retournera
  # la configuration sous forme de chaîne de caractères

  db_configuration_result = ERB.new(File.read(db_configuration_file_path)).result

  # En utilisant la gemme `yaml` précédemment ajoutée, nous pouvons charger notre configuration en toute sécurité.

  YAML.safe_load(db_configuration_result, aliases : true)
end

# Enfin, nous devons créer une connexion entre activerecord et postgres
# en utilisant la méthode `establish_connection`.
ActiveRecord::Base.establish_connection(db_configuration[ENV['ENVIRONMENT']])

module Application
  class Error < StandardError ; end
  # Votre code va ici...
fin

Nous disposons déjà des configurations, nous pouvons donc ajouter le modèle Post dans notre fichier rubis app. 

`├── App`

`│ └─── models`

`│ └─── post.rb`
app/models/post.rb
# frozen_string_literal : true

class Post < ActiveRecord::Base;end

et n'oubliez pas de charger le fichier dans application.rb

nécessite 'app/models/post'

N'oubliez pas non plus d'ajouter l'exigence 'app/runner' à app/application.rb

Si nous voulons ajouter de nouveaux fichiers dans notre application, des services, d'autres modèles, nous devons les charger dans le fichier application.rb.

RÉSUMÉ

Actuellement, notre application ruby est prête à continuer. Nous avons configuré :

  • connexion à la base de données,
  • Enregistrement actif,
  • Migrations autonomes avec rake

Comme vous pouvez le constater, il n'est pas toujours nécessaire d'utiliser l'option rails nouveaux. De cette manière, nous évitons d'inclure dans notre application du code inutile qui n'est pas utilisé. Nous avons plus de contrôle sur le développement de notre application. Nous pouvons ajouter des bibliothèques et une logique d'entreprise au fil du temps. Nous pouvons utiliser une telle application configurée pour créer un crawler ou un scraper, se connecter à une API externe à partir de laquelle nous récupérerons des informations et les stockerons dans notre propre base de données, ou charger des fichiers et en extraire des informations intéressantes. Je vous souhaite bonne chance dans le développement de vos propres applications !

BONUS

Notre application doit également être démarrée d'une manière ou d'une autre. Nous pouvons le faire de plusieurs manières, par exemple à partir du terminal. Nous pouvons créer un fichier exe/app qui chargera notre logique d'application à partir du fichier 'app/application' et d'exécuter notre application par l'intermédiaire de l'interface Coureur ajouté dans le répertoire de l'application.

#!/usr/bin/env ruby
# frozen_string_literal : true

nécessite 'bundler/setup'

$LOAD_PATH.unshift File.expand_path('..', __dir__)
nécessite 'app/application'

Runner.start
# frozen_string_literal : true

classe Runner
  def self.start
    met 'Start'
  end
fin
développement d'applications en rubis

N'oubliez pas non plus d'ajouter nécessite 'app/runner' à app/application.rb

Le code est disponible sur GitHub :

– https://github.com/dwatek/simplerubisapplication

Lire la suite

GraphQL Ruby. Qu'en est-il des performances ?

Rails et autres moyens de transport

Développement Rails avec TMUX, Vim, Fzf + Ripgrep

Articles connexes

Développement de logiciels

Construire des applications web à l'épreuve du temps : les conseils de l'équipe d'experts de The Codest

Découvrez comment The Codest excelle dans la création d'applications web évolutives et interactives à l'aide de technologies de pointe, offrant une expérience utilisateur transparente sur toutes les plateformes. Découvrez comment notre expertise favorise la transformation numérique et la...

LE CODEST
Développement de logiciels

Les 10 premières entreprises de développement de logiciels basées en Lettonie

Découvrez les principales sociétés de développement de logiciels en Lettonie et leurs solutions innovantes dans notre dernier article. Découvrez comment ces leaders de la technologie peuvent vous aider à développer votre entreprise.

thecodest
Solutions pour les entreprises et les grandes entreprises

L'essentiel du développement de logiciels Java : Un guide pour une externalisation réussie

Explorez ce guide essentiel sur le développement réussi de logiciels Java outsourcing pour améliorer l'efficacité, accéder à l'expertise et assurer la réussite des projets avec The Codest.

thecodest
Développement de logiciels

Le guide ultime de l'externalisation en Pologne

L'essor de outsourcing en Pologne est dû aux progrès économiques, éducatifs et technologiques, qui favorisent la croissance des technologies de l'information et un climat propice aux entreprises.

TheCodest
Solutions pour les entreprises et les grandes entreprises

Le guide complet des outils et techniques d'audit informatique

Les audits informatiques garantissent la sécurité, l'efficacité et la conformité des systèmes. Pour en savoir plus sur leur importance, lisez l'article complet.

The Codest
Jakub Jakubowicz CTO & Co-Fondateur

Abonnez-vous à notre base de connaissances et restez au courant de l'expertise du secteur des technologies de l'information.

    A propos de nous

    The Codest - Entreprise internationale de développement de logiciels avec des centres technologiques en Pologne.

    Royaume-Uni - Siège

    • Bureau 303B, 182-184 High Street North E6 2JA
      Londres, Angleterre

    Pologne - Les pôles technologiques locaux

    • Parc de bureaux Fabryczna, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Varsovie, Pologne

      The Codest

    • Accueil
    • A propos de nous
    • Services
    • Études de cas
    • Savoir comment
    • Carrières
    • Dictionnaire

      Services

    • Conseil consultatif
    • Développement de logiciels
    • Développement backend
    • Développement frontal
    • Staff Augmentation
    • Développeurs backend
    • Ingénieurs en informatique dématérialisée
    • Ingénieurs des données
    • Autres
    • Ingénieurs AQ

      Ressources

    • Faits et mythes concernant la coopération avec un partenaire externe de développement de logiciels
    • Des États-Unis à l'Europe : Pourquoi les startups américaines décident-elles de se délocaliser en Europe ?
    • Comparaison des pôles de développement Tech Offshore : Tech Offshore Europe (Pologne), ASEAN (Philippines), Eurasie (Turquie)
    • Quels sont les principaux défis des CTO et des DSI ?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Conditions d'utilisation du site web

    Copyright © 2025 par The Codest. Tous droits réservés.

    fr_FRFrench
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek fr_FRFrench