In Antwort auf Fragen von dem Flo ergänzend zum ersten Teil:
Unicode
Unicode wird demnächst in Ruby unterstützt. Bis dahin kann man auch im aktuellen Rails Unicode verwenden: siehe den Post im Ruby-On-Rails-Blog
strenge Typisierung
Mir selbst sind streng typisierte Sprachen vielfach lieber als dynamische. Dennoch: jede Sprache erlaubt durch Ihre Idiome und Konstrukte unterschiedlich gut Sachverhalte auszudrücken und in einer dynamischen Sprache ist die Programmierung im Kleinen sicherlich eleganter. Die seit Jahren brennenden Diskussionen für und wider strenge Typisierung wird vermutlich nicht so schnell abebben.
Ruby und Java
Ich selbst habe bislang Ruby und Java nur über HTTP bzw. Socket-Kommunikation integriert. Möchtest Du also POI anstelle einer MS-Office-OLE-Integration verwenden, würde ich spontan vermutlich auch wieder so eine Integrations-Strategie wählen.
Integration per REST
REST ist zur Integration von Systemen bestens geeignet. Erst heute haben wir einen Meilenstein in einem unserer Projekte erreicht, bei dem wir die Integration zweier Systeme, die auf verschiedenen Technologien basieren, sehr einfach und elegant zeigen konnten. Ich denke, dass ich dazu in Kürze etwas posten werde…
Posted by Phillip Ghadir at 10:19 PM
Ich möchte hier auf eine Frage eingehen, die der Flo in einem Kommentar gestellt hat.
Es geht darum, wie man Legacy-Schemata in Rails verwenden kann, die beispielsweise nicht über eine ID-Autoinkrement-Spalte verfügen.
Nun ich habe dazu folgendes gemacht, nur um das Prinzip zu zeigen. Dies ist keine 1-zu-1-Anleitung für den unbedarften Nachahmer:
Im Folgenden zeige ich die einzelnen Schritte:
pg-269:~/rp ghadir$ mysql -u root population_development
mysql> create table MYTABLE (
->
-> objectidentifier int not null,
-> name varchar(40),
-> constraint MYTABLEPK PRIMARY KEY (objectidentifier)
-> )
->
-> ;
Query OK, 0 rows affected (0.01 sec)
1 class Mytable < ActiveRecord::Base
2
3 @@counter = 1000
4
5 set_table_name 'mytable'
6 set_primary_key 'objectidentifier'
7
8 before_save :create_oid
9
10 def create_oid
11 if self.id == nil then
12 @@counter += 1
13 self.id = @@counter
14 end
15 end
16 end
pg-269:~/rp ghadir$ script/console
>> mt = Mytable.new :name => ‘TEST’
>> Mytable.find :all
#=> []
>> mt.save
=> true
>> Mytable.find :all
=> [#“TEST”, “objectidentifier”=>”1001”}>]
>> mt = Mytable.new :name => ‘TEST’
=> #“TEST”}>
>> mt.save
=> true
>> Mytable.find :all
=> [#“TEST”, “objectidentifier”=>”1001”}>, #“TEST”, “objectidentifier”=>”1002”}>]
Dieser Code ist natürlich unpraktisch, da ich nicht berücksichtige, dass objectidentifier eigentlich wieder der id zugewiesen werden muss, falls er gesetzt ist aber die id nicht. Sonst würde es mit den Scaffolds nicht funktionieren. Also ein gewisser Transfer muss gemacht werden. :-)
Ich hoffe trotzdem, dass klar geworden ist, dass auch die Anbindung einer Legacy-Tabelle mit wenigen Schritten getan werden kann.
Posted by Phillip Ghadir at 7:23 PM