ACHTUNG. Das ist ein Archiv des alten forum.ruby-portal.de. Die aktuelle Mailingliste gibt es auf lists.ruby-lang.org/pipermail/ruby-de.

NOTICE. This is a ready-only copy of the old forum.ruby-portal.de. You can find the current mailing list at lists.ruby-lang.org/pipermail/ruby-de.

Die Programmiersprache Ruby

Blog|

Forum|

Wiki  


Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]

Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 07 Mär 2016, 21:47 
Offline
Nuby

Registriert: 07 Mär 2016, 21:35
Beiträge: 3
Hallo Ruby-Gemeinde,

ich beschäftige mich seit einiger Zeit damit, unsere Firmendaten (teilweise aus einem LVS-System [Live, Oracle], teilweise aus einer Reporting-DB [Data-Warehouse, MySQL]) webbasiert darzustellen. Dabei habe ich mich ein wenig mit AngularJS als Frontend und einem Node-basierten REST-Backend verweilt und bin in dieser Zeit auf Ruby on Rails gestoßen, welches mich aufgrund der engen Verzahnung mit Datenbank-Anwendungen sofort überzeugt hat.

Ich habe mich bereits durch mehrere Tutorials gearbeitet und denke, ich habe die Grundzüge durchaus verstanden. Nur bei einem Punkt bin ich mir nicht sicher, aber genau an diesem kann ich mir absolut keinen Fehler erlauben. Kann ich Datenbanken anbinden, ohne dass diese jemals von Rails / Rake (db:) angefasst werden (insbesondere beim deployment)? Bei google findet man bei dieser Suche lediglich schwammige Antworten oder Antworten bezüglich "Migrationen ohne Datenbank".

Besten Dank im Voraus.

Gruß
AXEL


Nach oben
 Profil  
 
BeitragVerfasst: 07 Mär 2016, 22:41 
Offline
Lehrling
Benutzeravatar

Registriert: 28 Feb 2012, 21:58
Beiträge: 86
Wohnort: NRW
Hallo und Willkommen im Forum :)

Also um deine Frage zu beantworten: Ja! Du kannst die Datenbanken in Rails einbinden und dafür sorgen das sie nicht verändert werden dafür musst du halt nur für die Verbindung einen User auf die DB einloggen lassen der nur Lesen darf.
Wenn du das nicht brauchst und auch schreiben willst was man ja oft eigentlich will würde ich einfach mal sagen ein Backup von den Datenbanken zu machen oder ähnliches und dir vielleicht eine Testumgebung bauen mit denn Datenbestand.

Aber ich denke auch mal das du sowas hier suchst ein Dump von dem Datenabnk shema.
https://hackhands.com/ruby-rails-tutorial-creating-rails-instance-existing-mysql-db/

mfg Manchotix


Nach oben
 Profil  
 
BeitragVerfasst: 08 Mär 2016, 18:34 
Offline
Nuby

Registriert: 07 Mär 2016, 21:35
Beiträge: 3
Hallo Manchotix und vielen Dank für deine schnelle Antwort.

Natürlich kann ich - zu Testzwecken - einen Dump der produktiven Datenbank ziehen. Das ist aber nicht der Kern der Frage. Mir ging es darum, ob rake bei IRGENDEINEM Arbeitsschritt (insbesondere beim precompiling) ungewollt irgendwelche Schritte (drop, create, seed, Schema-Veränderung) im Vorder- oder Hintergrund durchführt und wie ich diese ggf. unterdrücken kann. Wie gesagt: ich bekomme die Füße abgehackt, wenn irgendetwas die produktive Datenbank vermurkst, an welcher unser LVS dran hängt. Das muss also absolut ausgeschlossen sein.


Nach oben
 Profil  
 
BeitragVerfasst: 08 Mär 2016, 20:32 
Offline
Interpreter

Registriert: 10 Dez 2007, 17:37
Beiträge: 1906
1.) Manchotix hat Recht. Wenn du auf Nummer sicher gehen willst, dann leg extra für Rails einen readonly user an, dann kann einfach nichts passieren.

2.) Du brauchst zumindest Schreibrechte auf die Tabelle schema_migrations. Rails checked mit Hilfe dieser Tabelle, ob alle Migrations auf dem aktuellen Stand sind. Es gibt zwar den Parameter


config.active_record.migration_error = false
aber ich kann dir nicht sagen, wie gut dieser Paramter ist.

3.) Wenn du keine Migration anlegest und die seeds.rb keinen Inhalt hat, dann macht Rails auch nix auser die versions weiter schreiben. Wenn du rake db:drop aufrufst, dann macht rails natürlich den Drop, wenn der DB-USer das Recht dazu hat.

4.) Vor einer Fehlbedienung bist du nie geschützt. Wenn jemand


RAILS_ENV=production rake db:drop
aufruft, dann hast du halt Pech. Kein Rake-Task wird automatisch aufgerufen. Es sei denn du rufst von Hand einen Rake-Task auf, der Abhängigkeiten zu einem anderen Rake Task hat. Ein beispiel dafür wäre


rake spec
. Dieser Dropped die Test DB und erzeugt diese neu. So lange du aber nicht explizit RAILS_ENV=prodcution setzt, ist alles OK. Es sei denn du bist so riskofreudig und konfigurierst deine Production-DB als -test oder dev-DB.

5.) Es gibt kein automatisches Deployment. Das deployment muss du selbst programmieren. Damit hast du es ganz allein in der Hand, welche rake Tasks ausgeführt werden. Viele nehmen Capistrano für das deployment. Capistrano hat einige automatismen. Da musst du schauen, was so alles beim deployment via Cap. ausgeführt wird.

An sonsten schreibt Rails nur bei update, create, touch usw. etwas in der DB.

Ein kleiner Hinweis, wenn deine DB nicht die Rails-Conventions in Bezug auf Spalten und Table-Bezeichnungen
einhält (in einem größeren Umfang, die Wahrscheinlichkeit dafür ist groß), dann würde ich auf den Einsatz von Rails verzichten.

Wenn man gegen die Rails-Conventions/ActiveRecord-Conventions arbeiten muss, dann ist das nicht nur ein pain in the ass, das kann dir dann sehr schnell beim nächsten Rails-Update auch um die Ohren fliegen.

Wenn du trotzdem mit einem legacy Schema arbeiten willst, dann ist eine hohe Test-Abdeckung das A und O.
Desweiteren muss man darfauf gefasst sein, dass mit jedemRails-Update eine große Menge Arbeit anstehen
kann.

_________________
Grüße
Jack


Nach oben
 Profil  
 
BeitragVerfasst: 08 Mär 2016, 21:08 
Offline
Nuby

Registriert: 07 Mär 2016, 21:35
Beiträge: 3
Vielen Dank für die Ausführungen. Jetzt sehe ich schon deutlich klarer. Das mit dem eigenständigen User ist schon mal ein guter Anfang. Informationen aus dieser Datenbank sollen ausschließlich abgerufen und angezeigt werden. Kein CRUD im eigentlichen Sinne. Aber so wie ich es jetzt heraus höre, sollte ich den Einsatz von Rails grundsätzlich nochmals überdenken. Ich war es von der AngularsJS / Node.JS (REST) Schiene aber einfach leid, mit der eigenen API im Prinzip alles doppelt programmieren zu müssen. Vielleicht kommt mir ja noch eine bessere Idee.


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach: