Seit ich von Spring Boot (Java) zu Ruby on Rails gewechselt bin, habe ich meine Lieblingspunkte von Rails zusammengefasst

Spring Boot war auch ein guter Kerl, aber Ruby on Rails ist schon mein Favorit!

Ich habe angefangen, von Java aus zu programmieren. Der Zweck war, es in meiner Arbeit zu nutzen, Im Moment mache ich hauptsächlich Webdienste als Hobby. Ich war ursprünglich interessiert, weil ich hörte, dass Ruby on Rails der Mainstream in der persönlichen Entwicklung und in den Unternehmungen ist. Obwohl Java auch amateurhaft ist, ist das Erlernen einer anderen Sprache zu teuer, und ich dachte, es wäre gut, wenn es als Webdienst gestaltet werden könnte.

Selbst mit dem Java-Framework habe ich mit Spring Boot entwickelt, das neu und einfach und schnell zu entwickeln ist. Von der Entwicklung bis zur Veröffentlichung mit Spring Boot konnte ich tun, was ich wollte. Trotzdem war ich neugierig auf Ruby On Rails, aber andererseits war ich in gewissem Maße auch an Spring Boot gebunden. Ich fand es ein wenig cool, ein anderes Framework als andere zu verwenden, und plante daher, es weiterhin so zu verwenden, wie es ist.

Das war vor ungefähr 3 Wochen.

Ich habe mir den Webdienst ausgedacht, den ich erstellen wollte, und diesmal habe ich mit der Entwicklung begonnen, um ihn in wenigen Wochen zu veröffentlichen. Ich war jedoch süchtig nach der Twitter-Login-Authentifizierung. Natürlich hatte ich Probleme, weil es nicht gut funktioniert hat, also habe ich verschiedene Dinge untersucht, aber die Informationen zur Twitter-Authentifizierung mit Spring Boot (ich möchte Spring Social und Spring Security verknüpfen) sind extrem klein, selbst wenn sie in Englisch enthalten sind. .. Ich habe keinen von ihnen ausprobiert und es hat nicht funktioniert. Ich habe es hier 2 Tage lang benutzt. (Ungefähr 8 Stunden) Um ehrlich zu sein, gab es viele Teile, in denen ich den Verarbeitungsprozess nicht verstehen konnte. Ich denke, es gab auch eine Möglichkeit, die offizielle Referenz von Grund auf nachzuschlagen und selbst zu implementieren. Ich denke, es ist in Ordnung, sich so viel Zeit zu nehmen, um die ursprünglichen Funktionen zu implementieren, aber ich hatte den starken Wunsch, allgemeine Teile wie die Twitter-Authentifizierung ehrlich zu kopieren und einzufügen. Als ich es in Ruby on Rails nachgeschlagen habe, habe ich viele Beispiele gefunden und die Implementierung war einfach.

Danach möchte ich Rails recherchieren und Webdienste individuell und schnell implementieren. Als Antwort auf die Anfrage Ich fand Ruby On Rails eindeutig geeignet. Obwohl es das Lernen kostet, sollte es effizienter sein, wenn Sie in wenigen Monaten umsteigen. Wir haben beschlossen, die Serviceentwicklung zu stoppen und darauf umzusteigen. Ich habe auch von VScode zu Atom gewechselt.

Studieren Sie die Geschichte von Ruby on Rails

Ich habe ungefähr 2 Wochen (40-50 Stunden) studiert. Lesen Sie die Ruby-Edition der Punktinstallation und das Ruby on Rails-Tutorial im Zug und während der Mittagspause Es ist, als würden Sie Ihre Hände bewegen, nachdem Sie nach Hause zurückgekehrt sind, um es umzusetzen.

Ruby on Rails Tutoria wurde übersprungen und das Durchlesen → Implementieren → Durchlesen dauerte ungefähr 3 Wochen. Von hier aus plane ich, die Teile zu studieren, die ich beim Erstellen des Dienstes nicht verstehe.

Spring Boot vs Ruby on Rails Ruby on Rails war das Beste!

Es gibt überwiegend viele kostenlose Dokumente und Muster.

Wahnsinnig wichtig. Zumal es niemanden gibt, der als Selbstwissenschaftler leicht zuhören kann Die Aktivität des Google-Lehrers wird zu einem wichtigen Thema.

Spring Boot: Spring Boot hat nicht viele Informationen im Web. Also suchte ich nach einem Nachschlagewerk, konnte aber nicht sagen, ob es gut oder schlecht war, da es nur 4 Arten von Auswahlmöglichkeiten und wenige Buchbesprechungen gab. Ich hatte keine Reserve in der Buchhandlung in meiner Nachbarschaft, also ging ich nach Shinjuku, um sie zu kaufen.

Ruby on Rails: Ich habe dieses Mal nicht 1 Yen für das Lernen bezahlt. Ruby on Rails-Tutorials, Online-Lerndienste für Anfänger Es war ein sehr einfach zu befolgendes Framework, da Sie durch Suchen viel lernen können. Wir haben reichlich Proben, daher können wir davon ausgehen, dass wir die zukünftige Entwicklung beschleunigen werden.

Einfache Einrichtung der Ausführungsumgebung

Spring Boot: Java installieren, passieren, Maven installieren, passieren, Es dauerte ungefähr eine Stunde, um es zu benutzen. Anfänger sind auf einem frustrierenden Niveau.

Ruby on Rails: Ich benutze MAC, aber es war so einfach, dass ich vergessen habe, wie man es macht. ※Vergessen.

Einfach ein Projekt zu erstellen

Spring Boot: Gehen Sie zu Spring Initializer (https://start.spring.io/) und erstellen Sie ein Paket. Ich weiß immer noch nicht, was ich in die Gruppen- und Artiface-Elemente einfügen soll, und es gibt viele Auswahlelemente.

Ruby on Rails: Die Entwicklung kann schnell mit neuen Schienen von der Konsole aus gestartet werden. Es scheint, dass der DB-Typ auch als Option angegeben werden kann.

Hervorragende Standardstruktur für Ordner

Spring Boot: Standardmäßig kann nichts getan werden, daher müssen Sie die Platzierungsregeln festlegen und den Ordner selbst erstellen. Zuerst kannte ich die beste Vorgehensweise nicht und fragte mich, ob dies in Ordnung war, aber ich schaffte es mit meiner eigenen MVC.

Quellordner von Pochipochi: スクリーンショット 2018-06-10 19.09.13.png

Ruby on Rails: Wenn Sie ein Paket mit Rails new erstellen, werden automatisch Ordner für verschiedene Zwecke wie Modell, Ansicht und Konfiguration erstellt. Auch wenn Sie sich nicht für das Quellcode-Layout interessieren, wird es gemäß der Standardeinstellung organisiert, was für Anfänger hilfreich ist. Sie können die übliche einfache Arbeit des automatischen Generierens weglassen.

Automatisch generierter Ordner Quellordner: スクリーンショット 2018-06-10 19.07.00.png

Einfache Verwaltung von Abhängigkeitspaketen

Spring Boot: Es wird von Pom (Maven) verwaltet. Die beschriebenen Elemente sind wie folgt.

pom.xml


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

Ruby on Rails: Es wird von einer Gem-Datei verwaltet. Die beschriebenen Elemente sind die gleichen. Ist es ein bisschen einfach?

Gemfile


gem 'rails', '~> 5.2.0'

Einfach zu verstehende URL-Zuordnung

Spring Boot: Der Controller verarbeitet die Zuordnung von URLs und Ansichten sowie die Übergabe von Werten. Da die Zuordnung über mehrere Dateien hinweg beschrieben wird, ist welche URL welche Ansicht und welcher Controller Ich verliere oft den Überblick darüber, ob es damit zusammenhängt. value =" / " ist die entsprechende URL mav.setViewName (" index ") Suchen und Anzeigen einer Vorlage (HTML-Datei) mit dem Namen index. Es gibt verschiedene andere Definitionsmethoden.

indexController.java


@Controller
public class indexContoroller{

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

Ruby on Rails: Die URL-Zuordnung ist in routers.rb definiert. Nur die URL-Zuordnung wird vom Spring Boot-Controller ausgeschnitten. Es ist gut lesbar, weil es aufgelistet werden kann. get '/ help', to: 'static_pages # help' hat' / help 'als URL Eine Klasse mit Verarbeitung, die von 'static_pages # help' ausgeführt werden soll.

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

Es ist so abstrakt, dass Sie die Existenz von DB vergessen

Spring Boot: Wenn Sie DB verwenden möchten, bereiten Sie eine Datenbank vor, erstellen Sie eine Tabelle, Danach müssen Sie mehrere Klassen für die DB-Verbindung vorbereiten. Die Operation wird abstrahiert, aber die Anzahl der Schritte zum Schreiben von Daten ist nicht gering.

Es ist etwas lang, beschreibt aber die Klasse, die für die Bearbeitung der Member-Tabelle vorbereitet wurde. Member.java entspricht der Member table und empfängt die Daten. Sie können die Abfrage mit MemberRepository.java anpassen.

Der tatsächliche Zugriff ist "@Autowired MemberRepository Repository" in der Klasse, die Sie verwenden möchten Erstellen Sie eine Repository-Instanz in und verwenden Sie sie als "repository.findById (id);".

JpaRepository <Member, Integer> verursacht einen Fehler, wenn Sie den Typ des Primärschlüssels der Tabelle nicht angeben.

MemberRepository.java


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

Klasse entsprechend der Tabelle:

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: Schienen erzeugen Modell" Tabellenname "Inhalt: Text Wenn Sie den Befehl wie ausführen, werden die Tabelle und die für die Operation erforderliche Klasse automatisch generiert. Sie können plötzlich wie unten gezeigt aus der Datenbank lesen und schreiben.

m = "Tabellenname".new
m.find_by()`

Ich habe mich bisher noch nie direkt mit der DB verbunden. Mit Rails vergisst man fast die Existenz von DB.

Edelstein ist ausgezeichnet

Spring Boot: Ich habe die Funktion zum Hochladen von Bildern in Spring Boot implementiert, aber es war ziemlich schwierig. Hochladen und Validieren in HTML und JS, Fügen Sie nach dem Empfang den Pfad der Datei in die Datenbank ein und speichern Sie die Datei lokal. Ich musste den Prozess von Grund auf neu schreiben.

Ruby on Rails: In Bezug auf das Hochladen von Bildern gibt es ein Juwel namens CarrierWave. Es kann mit etwa 1/3 der Verarbeitung von Spring Boot implementiert werden. Der Frühling hat viele nützliche Funktionen, aber Rails ist besser. Ich habe einen guten Eindruck, wenn es um Webentwicklung geht.

Webserver-Bundle

Spring Boot: Tatsächlich wird Spring Boot auch mit Tomcat gebündelt, daher ist dies ein Unentschieden. Wenn es sich um den Standardport 80 handelt, kann er nicht lokal auf dem MAC gestartet werden. Daher müssen Sie die Portnummer angeben und starten.

Ruby on Rails: Die Portnummer 3000 scheint die Standardeinstellung zu sein, sodass Sie nichts tun müssen

Andere Ruby on Rails guter Punkt

Zusammenfassung

Rails hat im Hintergrund viel mühsame Arbeit, Ich schreibe ein Programm, aber es fühlt sich an, als würde ich ein Puzzle oder ein Spiel spielen. Was Spring Boot betrifft, kann die Funktion nach Durchlaufen verschiedener Verfahren implementiert werden, sodass das Team solide war. Ich denke, dass es für große Anwendungen geeignet ist, aber auf der Ebene der persönlichen Entwicklung Die aktuelle Schlussfolgerung ist, dass Sie diese Enge nicht brauchen.

Recommended Posts

Seit ich von Spring Boot (Java) zu Ruby on Rails gewechselt bin, habe ich meine Lieblingspunkte von Rails zusammengefasst
Zusammenfassung der Punkte, über die ich mir bei der Migration von Java nach Kotlin Sorgen gemacht habe
05. Ich habe versucht, die Quelle von Spring Boot zu löschen
[Von Zeit zu Zeit aktualisiert] Ruby on Rails Praktische Methode
Ich habe versucht, die Kapazität von Spring Boot zu reduzieren
Von Java zu Ruby !!
[Ruby on Rails] Von der MySQL-Konstruktion zum Datenbankwechsel
Die Geschichte der Erhöhung von Spring Boot von 1.5 auf 2.1 Serie Teil2
[Ruby on Rails] Eliminierung von Fat Controller-First, Logik zum Modell-
Anfänger Ruby on Rails Was ich gelernt habe, wird zusammengefasst
Versuchen Sie Spring Boot von 0 bis 100.
Ruby on Rails - Von der Umgebungskonstruktion bis zur einfachen Anwendungsentwicklung auf WSL2
Ich möchte eine Browsing-Funktion mit Ruby on Rails hinzufügen
Ich möchte nur Java mit Eclipse auf meinem Mac schreiben
02. Ich habe eine API erstellt, um eine Verbindung von Spring Boot zu MySQL (My Batis) herzustellen.
Was ich bei der Migration von der Spring Boot 1.4-Serie zur 2.0-Serie getan habe
Was ich bei der Migration von der Spring Boot 1.5-Serie zur 2.0-Serie getan habe
Ich möchte die Standardfehlermeldung von Spring Boot steuern
Ich habe den Ablauf bis zur Implementierung von simple_calendar in Ruby on Rails zusammengefasst.
Grundkenntnisse in Ruby on Rails
Verwendung von Ruby on Rails
Rüsten Sie den Federstiefel von der 1.5-Serie auf die 2.0-Serie auf
[Java] Ablauf von der Einführung von STS bis zur Bestätigung der dynamischen Seite auf dem lokalen Host (2/3)
[Spring Boot] Ich habe untersucht, wie die Nachbearbeitung der empfangenen Anforderung implementiert werden kann.
Ich möchte Bilder mit REST Controller von Java und Spring anzeigen!
[Java] Ablauf von der Einführung von STS bis zur Bestätigung der dynamischen Seite auf dem lokalen Host (1/3)
Mein Memorandum, dass ich ValidationMessages.properties UTF8 in Spring Boot erstellen möchte
So lösen Sie die lokale Umgebungskonstruktion von Ruby on Rails (MAC)!
[Java Spring MVC] Ich möchte DI in meiner eigenen Klasse verwenden
Ich habe versucht, die Grammatik von R und Java zu übersetzen [Von Zeit zu Zeit aktualisiert]
Vom Ziehen des Docker-Images der Schienen bis zum Starten
[Ruby on Rails] Einführung der Anfangsdaten
[Rails] Hinzufügen der Ruby On Rails-Kommentarfunktion
Rails können nicht auf dem Mac installiert werden
Die Geschichte des Übergangs von Spring Boot 1.5 zu 2.1
Bereitstellen für Heroku [Ruby on Rails] Anfänger
[Tag: 5] Ich habe die Grundlagen von Java zusammengefasst
Änderungen bei der Migration von Spring Boot 1.5 auf Spring Boot 2.0
Vorbereiten der Einführung von jQuery in Ruby on Rails
Änderungen bei der Migration von Spring Boot 2.0 zu Spring Boot 2.2
[Ruby on Rails] Japanische Fehlernotation
[Ruby on Rails] Verwendung von redirect_to
Erklärung von Ruby auf Schienen für Anfänger ①
[Ruby on Rails] Implementierung einer ähnlichen Funktion
[Ruby on Rails] Schaltfläche, um nach oben zurückzukehren
[Förderung des Ruby-Verständnisses (1)] Wenn Sie von Java zu Ruby wechseln, verstehen Sie zuerst den Unterschied.
[Ruby on Rails] Ändern Sie das Aktualisierungsdatum und das Erstellungsdatum in Ihre bevorzugte Notation