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  [ 2 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 14 Mai 2016, 16:02 
Offline
Nuby

Registriert: 14 Mai 2016, 14:54
Beiträge: 1
Hallo zusammen,

um mein derzeitiges Problem in einem Satz zusammenzufassen:
Wie schaffe ich es neben meiner in Rails erstellten Datenbank (die hervorragend funktioniert) auf eine bereits bestehende MySQL Datenbank (nicht mit Rails erstellt) zuzugreifen um Daten auszulesen?

Kurz zu meinem Setup: Ich arbeite mit Rails 4.2.6 unter Windows 7 (64bit). Das gem mysql2 habe ich bereits installiert.

Nun etwas ausführlicher zu meinem aktuellen Stand:
Ich habe in meiner Webapplication eine Benutzerverwaltung die Userdaten in ihrer Datenbank enthält. Im file schema.rb ist hinterlegt wie die Tabelle (in diesem Fall 'users') aufgebaut ist und im file user.rb wird die dazugehörige Modelklasse erstellt. Außerdem wird ja noch im file database.yml der verwendete Datenbankadapter und weitere Parameter für die jeweiligen Umgebungen spezifiziert. Funktioniert soweit auch alles wunderbar.
Jetzt möchte ich zusätzlich auf eine "externe" MySQL Datenbank zugreifen. Hierfür muss ich doch deren Parameter zusätzlich in der database.yml angeben und eine Modelklasse erstellen? Zumindest habe ich das so in den etlichen Anleitungen die ich in den letzten Tagen im Netz gefunden habe so verstanden.

Hier mal der Inhalt meiner database.yml



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

default: &default
adapter: sqlite3
pool: 5
timeout: 5000

mysql: &mysql
adapter: mysql2
encoding: utf8
reconnect: false
pool: 5
username: Username
password: Passwort
host: https://zur-Datenbank.de
prepared_statements: false

development:
<<: *default
database: db/development.sqlite3

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
<<: *default
database: db/test.sqlite3

production:
<<: *default
database: db/production.sqlite3

mysql_development:
<<: *mysql
database: Datenbank

mysql_test:
<<: *mysql
database: Datenbank

mysql_production:
<<: *mysql
database: Datenbank


An Modelklassen habe ich zusätzlich diese jeweils in einem eigenen file:



1
2
3
4
class MysqlBase < ActiveRecord::Base
self.abstract_class = true
establish_connection "mysql_#{Rails.env}"
end




1
2
3
class EfvsTable < MysqlBase
self.table_name = "efvs" # Tabelle auf die in der Datenbank zugegriffen werden soll
end


Es müsste doch nach der erfolgreichen Implementierung in der Console möglich sein mit efvs.first auf das erste Objekt in der Tabelle zuzugreifen? Mir hat es allerdings in der Console immer folgenden NameError raus: undefined local variable or method 'efvs' for main:Objekt
Anschließend kommet noch haufenweise Code mit from ... mit dem ich überhaupt nichts anfangen kann.

Einen zusätzlichen Eintrag in schema.rb brauche ich ja nicht, da die Datenbank nicht mit Rails erstellt wurde?

Was habe ich an dem Ganzen nicht bzw. falsch verstanden? Mit einem Link zu einer ausführlichen Anleitung (die beschreibt was bei dem Setup wirklich vor sich geht) wäre mir sehr geholfen.
Vielleicht kann mir aber auch jemand direkt ein paar Tips geben?

Ich bin momentam wirklich schon an einem Punkt wo ich nicht mehr weiß wie ich das Ding zum laufen bringen soll.

Schon mal vielen Dank für eure Hilfe!


Nach oben
 Profil  
 
BeitragVerfasst: 15 Mai 2016, 12:53 
Offline
Lehrling
Benutzeravatar

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

also wenn ich das richtig verstanden habe willst du eine schon existierende Datenbank mit RoR verwenden aber RoR findet diese nicht so auf Anhieb.
Dazu gibt es hier im Forum schon einmal eine ähnliche Frage die dir Vielleicht weiter helfen kann und auch noch einmal ein Link zur Hilfe.
http://forum.ruby-portal.de/viewtopic.php?f=14&t=26756
https://hackhands.com/ruby-rails-tutorial-creating-rails-instance-existing-mysql-db/

RORneedy hat geschrieben:
Einen zusätzlichen Eintrag in schema.rb brauche ich ja nicht, da die Datenbank nicht mit Rails erstellt wurde?

Naja, sollte man schon machen, aber wie du schon richtig eingestellt hast in der database.yml bekommst du ein Verbindung zu der Datenbank und brauchst nur noch


rake db:schema:dump
ausführen um von deiner oder deinen Datenbanken ein neues Schema erstellen zu lassen.
Dadurch bekommst du vermutlich deine Schema für die externe Mysql-DB

Vielleicht solltest du auch nochmal so einwenig grob die Docs von RoR lesen hilft bestimmt weiter gewisse dinge und vorgänge zu verstehen.
http://guides.rubyonrails.org/

mfg Manchotix


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 2 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:
cron