Depuis que je suis passé de Spring Boot (Java) à Ruby on Rails, j'ai résumé mes points préférés de Rails

Spring Boot était aussi un bon gars, mais Ruby on Rails est déjà mon préféré!

J'ai commencé à programmer à partir de Java. Le but était d'en faire usage dans mon travail, En ce moment, je crée principalement des services Web comme passe-temps. J'étais intéressé à l'origine parce que j'ai entendu dire que Ruby on Rails est le courant dominant du développement personnel et des entreprises. Cependant, même si Java est également amateur, apprendre un autre langage est trop cher, et j'ai pensé que ce serait bien s'il pouvait être conçu comme un service Web.

Ainsi, même avec le framework Java, j'ai pu développer simplement et rapidement en utilisant le nouveau Spring Boot. Du développement à la sortie avec Spring Boot, j'ai pu faire ce que je voulais faire. Pourtant, j'étais curieux à propos de Ruby On Rails, mais d'un autre côté, j'étais également attaché à Spring Boot dans une certaine mesure. J'ai trouvé que c'était un peu cool d'utiliser un framework différent des gens, alors j'ai prévu de continuer à l'utiliser tel quel.

C'était il y a environ 3 semaines.

J'ai créé le service Web que je voulais créer, et cette fois j'ai commencé le développement dans le but de le publier dans quelques semaines. Cependant, j'étais accro à l'authentification de connexion Twitter. Bien sûr, j'ai eu des problèmes parce que cela ne fonctionnait pas bien, donc j'ai fait des recherches sur diverses choses, mais les informations sur l'authentification Twitter à l'aide de Spring Boot (je veux lier Spring Social et Spring Security) sont extrêmement petites même si elles sont incluses en anglais. .. Je n'ai essayé aucun d'entre eux et cela n'a pas fonctionné. Je l'ai utilisé ici pendant 2 jours. (Environ 8 heures) Pour être honnête, il y avait de nombreuses parties où je ne pouvais pas comprendre le processus de traitement. Je pense qu'il y avait aussi un moyen de rechercher la référence officielle à partir de zéro et de l'implémenter vous-même. Je pense qu'il est normal de prendre autant de temps pour implémenter les fonctions d'origine, mais j'avais un fort désir de copier et coller honnêtement des parties générales telles que l'authentification Twitter. Quand je l'ai recherché dans Ruby on Rails, j'ai trouvé de nombreux exemples et la mise en œuvre était simple.

Après cela, j'aimerais faire des recherches sur Rails et implémenter des services Web individuellement avec un sens de la vitesse. En réponse à la demande Je pensais clairement que Ruby On Rails convenait. Bien que cela coûte de l'apprentissage, cela devrait être plus efficace si vous changez dans quelques mois. Nous avons décidé d'arrêter le développement du service et d'y basculer. Je suis également passé de VScode à Atom.

Étudier l'histoire de Ruby on Rails

J'ai étudié pendant environ 2 semaines (40 à 50 heures). Lire l'édition Ruby de l'installation de points et le tutoriel Ruby on Rails dans le train et pendant la pause déjeuner C'est comme bouger vos mains après être rentré chez vous pour le mettre en œuvre.

Le didacticiel Ruby on Rails a été ignoré et il a fallu environ 3 semaines pour le lire → implémenter → lire. À partir de là, je prévois d'étudier les parties que je ne comprends pas lors de la création du service.

Spring Boot vs Ruby on Rails Ruby on Rails était le meilleur!

Il existe une très grande majorité de documents et d'échantillons gratuits.

Incroyablement important. D'autant plus qu'il n'y a personne qui puisse facilement écouter en autodidacte L'activité du professeur Google devient un enjeu vital.

Spring Boot: Spring Boot n'a pas beaucoup d'informations sur le Web. J'ai donc cherché un livre de référence, mais je ne pouvais pas dire s'il était bon ou mauvais car il n'y avait que 4 types de choix et peu de critiques de livres. Je n'avais pas de réserve à la librairie de mon quartier, alors je suis allé à Shinjuku pour l'acheter.

Ruby on Rails: Je n'ai pas payé 1 yen pour apprendre cette fois. Tutoriels Ruby on Rails, services d'apprentissage en ligne pour les débutants C'était un cadre très facile à suivre car vous pouvez en apprendre beaucoup en recherchant. Nous avons des échantillons abondants, nous pouvons donc nous attendre à accélérer le développement futur.

Configuration simple de l'environnement d'exécution

Spring Boot: Installer Java, passer, installer Maven, passer, Il a fallu environ une heure pour commencer à l'utiliser. Les débutants sont à un niveau frustrant.

Ruby on Rails: J'utilise MAC, mais c'était tellement simple que j'ai oublié comment le faire. ※Oublié.

Facile à créer un projet

Spring Boot: Accédez à Spring Initializer (https://start.spring.io/) et créez le package. Je ne sais toujours pas quoi mettre dans les éléments Groupe et Artiface, et il y a de nombreux éléments de sélection.

Ruby on Rails: Le développement peut être démarré rapidement avec des rails nouveaux depuis la console. Il semble que le type de base de données puisse également être spécifié en option.

Excellente structure de dossier par défaut

Spring Boot: Par défaut, vous ne pouvez rien faire de particulier, vous devez donc décider des règles de placement et créer vous-même le dossier. Au début, je ne connaissais pas les meilleures pratiques, et je me demandais si tout allait bien, mais j'ai réussi à le faire avec mon propre MVC.

Dossier source créé par Pochipochi: スクリーンショット 2018-06-10 19.09.13.png

Ruby on Rails: Lorsque vous créez un package avec Rails new, des dossiers à des fins différentes telles que le modèle, la vue et la configuration sont automatiquement créés. Même si vous ne vous souciez pas de la disposition du code source, elle sera organisée selon la valeur par défaut, ce qui est utile pour les débutants. Vous pouvez omettre le travail simple habituel de le générer automatiquement.

Dossier généré automatiquement Dossier source: スクリーンショット 2018-06-10 19.07.00.png

Gestion simple des packages de dépendances

Spring Boot: Il est géré par pom (Maven). Les éléments décrits sont comme ça.

pom.xml


 <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
 </dependency>

Ruby on Rails: Il est géré par un fichier gem. Les éléments décrits sont les mêmes. Est-ce un peu simple?

Gemfile


gem 'rails', '~> 5.2.0'

Mappage d'URL facile à comprendre

Spring Boot: Le contrôleur gère le mappage d'URL et de vue et la transmission des valeurs. Étant donné que le mappage est décrit sur plusieurs fichiers, quelle URL est quelle vue et quel contrôleur Je ne sais souvent pas si c'est lié. value =" / " est l'URL correspondante mav.setViewName (" index ") Recherchez et affichez le modèle (fichier HTML) nommé index. Il existe diverses autres méthodes de définition.

indexController.java


@Controller
public class indexContoroller{

@RequestMapping(value = "/", method = RequestMethod.GET)
public ModelAndView showIndex (ModelAndView mav){
    mav.setViewName("index");
	return mav;
    }   
}

Ruby on Rails: Le mappage d'URL est défini dans routers.rb. Seul le mappage d'URL est coupé du contrôleur Spring Boot. Il est hautement lisible car il peut être répertorié. get '/ help', to: 'static_pages # help' a' / help 'comme URL Une classe avec un traitement à exécuter par "pages_statiques # help".

routers.rb


Rails.application.routes.draw do
  get  '/help', to: 'static_pages#help'

static_pages_controller.rb


class StaticPagesController < ApplicationController
 
    def help; 
    #hogehoge
    end

ends

C'est tellement abstrait que vous oubliez l'existence de DB

Spring Boot: Lorsque vous souhaitez utiliser DB, préparer une base de données, créer une table, Après cela, vous devez préparer plusieurs classes pour la connexion à la base de données. L'opération est abstraite, mais le nombre d'étapes pour pouvoir écrire des données n'est pas limité.

C'est un peu long, mais cela décrit la classe prête à faire fonctionner la table Member. «Member.java» correspond à la «Table des membres» et reçoit les données. Vous pouvez personnaliser la requête avec MemberRepository.java.

L'accès réel est @Autowired MemberRepository repository; dans la classe que vous souhaitez utiliser Créez une instance de référentiel dans et utilisez-la comme repository.findById (id);.

JpaRepository <Member, Integer> provoquera une erreur si vous ne spécifiez pas le type de la clé primaire de la table.

MemberRepository.java


public interface MemberRepository extends JpaRepository<Member, Integer> {
    public Member findByUsername(String username);
    public boolean existsByUsername(String username);
}

Classe correspondant à la table:

Member.java


Entity
@Table(name = "member")
public class Member implements UserDetails {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    // private Long userid;
    private int userid;

    @Column(nullable = false, unique = true)
    private String username;

    @Column(nullable = false)
    private String password;

    @Column(nullable = false)
    private String displyname;

    public Member() {
        super();

    }

    public String getDisplyname() {
        return displyname;
    }

    public int getUserid() {
        return userid;
    }

    public void setDisplyname(String displyname) {
        this.displyname = displyname;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public Collection<? extends GrantedAuthority> getAuthorities() {
        return null;
    }

    @Override
    public String getPassword() {
        return this.password;
    }

    @Override
    public String getUsername() {
        return this.username;
    }

    public String getMail() {
        return this.displyname;
    }

    @Override
    public boolean isAccountNonExpired() {
        return true;
    }

    @Override
    public boolean isAccountNonLocked() {
        return true;
    }

    @Override
    public boolean isCredentialsNonExpired() {
        return true;
    }

    @Override
    public boolean isEnabled() {
        return true;
    }

}

Ruby on Rails: `les rails génèrent le modèle" nom de table "contenu: texte Lorsque vous exécutez la commande like, la table et la classe requises pour l'opération sont automatiquement générées. Vous pouvez soudainement lire et écrire à partir de la base de données comme indiqué ci-dessous.

m = "nom de la table".new
m.find_by()`

Je ne me suis jamais connecté directement à la DB jusqu'à présent. Rails fait presque oublier l'existence de DB.

La gemme est excellente

Spring Boot: J'ai implémenté la fonction de téléchargement d'image dans Spring Boot, mais c'était assez difficile. Télécharger et valider en HTML et JS, Après l'avoir reçu, placez le chemin du fichier dans la base de données et enregistrez le fichier localement. J'ai dû écrire le processus à partir de zéro.

Ruby on Rails: En ce qui concerne le téléchargement d'images, il existe un joyau appelé CarrierWave, Il peut être implémenté avec environ 1/3 du traitement de Spring Boot. Spring a beaucoup de fonctionnalités utiles, mais Rails est meilleur. J'ai une bonne impression en matière de développement Web.

Bundle de serveur Web

Spring Boot: En fait, Spring Boot est également fourni avec Tomcat, il s'agit donc d'un tirage au sort. S'il s'agit du port 80 par défaut, il ne peut pas être démarré localement sur le MAC, il est donc nécessaire de spécifier le numéro de port et de le démarrer.

Ruby on Rails: Le numéro de port 3000 semble être la valeur par défaut, vous n'avez donc rien à faire

Autre bon point de Ruby on Rails

Résumé

Rails a beaucoup de travail pénible en arrière-plan, J'écris un programme, mais j'ai l'impression de jouer à un puzzle ou à un jeu. Quant à Spring Boot, la fonction peut être implémentée après avoir traversé diverses procédures, l'équipe était donc solide. Je pense qu'il convient pour faire de grandes applications, mais au niveau du développement personnel La conclusion actuelle est que vous n'avez pas besoin de cette étanchéité.

Recommended Posts

Depuis que je suis passé de Spring Boot (Java) à Ruby on Rails, j'ai résumé mes points préférés de Rails
Résumé des points qui m'inquiétaient lors de la migration de Java vers Kotlin
05. J'ai essayé de supprimer la source de Spring Boot
[Mis à jour de temps en temps] Ruby on Rails Méthode pratique
J'ai essayé de réduire la capacité de Spring Boot
De Java à Ruby !!
[Ruby on Rails] De la construction de MySQL au changement de base de données
L'histoire de la montée de Spring Boot de la série 1.5 à la série 2.1 part2
[Ruby on Rails] Élimination de Fat Controller-First, logic to model-
Débutant Ruby on Rails Ce que j'ai appris est résumé
Essayez Spring Boot de 0 à 100.
Ruby on Rails - De la construction d'environnement au développement d'application simple sur WSL2
Je souhaite ajouter une fonction de navigation avec ruby on rails
Je veux juste écrire Java en utilisant Eclipse sur mon Mac
02. J'ai créé une API pour me connecter de Spring Boot à MySQL (My Batis)
Ce que j'ai fait lors de la migration de la série Spring Boot 1.4 vers la série 2.0
Ce que j'ai fait lors de la migration de la série Spring Boot 1.5 vers la série 2.0
Je veux contrôler le message d'erreur par défaut de Spring Boot
J'ai résumé le flux jusqu'à l'implémentation de simple_calendar dans Ruby on Rails.
Connaissance de base de Ruby on Rails
Comment utiliser Ruby on Rails
Mise à niveau de la botte à ressort de la série 1.5 à la série 2.0
[Java] Flux de l'introduction de STS à la confirmation de la page dynamique sur l'hôte local (2/3)
[Spring Boot] J'ai étudié comment implémenter le post-traitement de la demande reçue.
Je veux afficher des images avec REST Controller de Java et Spring!
[Java] Flux de l'introduction de STS à la confirmation de la page dynamique sur l'hôte local (1/3)
Mon mémorandum que je veux faire ValidationMessages.properties UTF8 dans Spring Boot
Comment résoudre la construction de l'environnement local de Ruby on Rails (MAC)!
[Java Spring MVC] Je souhaite utiliser DI dans ma propre classe
J'ai essayé de traduire la grammaire de R et Java [Mis à jour de temps en temps]
De la traction des rails image-docker au lancement
[Ruby on Rails] Introduction des données initiales
[Rails] Ajout de la fonction de commentaire Ruby On Rails
Les rails ne peuvent pas être installés sur Mac
L'histoire de la transition de Spring Boot 1.5 à 2.1
Déployer sur Heroku [Ruby on Rails] Débutant
[jour: 5] J'ai résumé les bases de Java
Modifications lors de la migration de Spring Boot 1.5 vers Spring Boot 2.0
Préparation à l'introduction de jQuery dans Ruby on Rails
Modifications lors de la migration de Spring Boot 2.0 vers Spring Boot 2.2
[Ruby on Rails] Notation japonaise de l'erreur
[Ruby on Rails] Comment utiliser redirect_to
Explication de Ruby sur rails pour les débutants ①
[Ruby on rails] Implémentation d'une fonction similaire
Bouton [Ruby on Rails] pour revenir en haut
[Promotion de la compréhension de Ruby (1)] Lorsque vous passez de Java à Ruby, commencez par comprendre la différence.
[Ruby on Rails] Modifiez la date de mise à jour et la date de création selon votre notation préférée