2009-10-16 5 views
3

Je suis assez nouveau à (J) Ruby - j'ai écrit quelques minuscules "applications de démonstration" dans RoR mais je n'ai pas vraiment compris la syntaxe.Analyser XML dans (J) Ruby et Insérer dans la base de données

J'ai actuellement une application écrite en Java qui prend un fichier XML, l'analyse puis l'insère dans une base de données MySQL en utilisant Hibernate. Qu'est-ce que je voudrais vraiment faire est de voir si je peux porter ce à JRuby, - principalement comme un exercice d'apprentissage - mais je ne sais pas trop où commencer .

Ce document semble donner une bonne idée sur l'analyse syntaxique du XML:

http://developer.yahoo.com/ruby/ruby-xml.html

Mais à partir de là, je ne sais pas quelle est la meilleure façon de le mettre dans le DB est. Activer ActiveRecord est-il une option, et si oui, comment puis-je l'associer à une application JRuby "autonome"? Ou je suppose que je pourrais en quelque sorte intégrer mon truc Hibernate existant, non?

Des conseils ou des liens vers un exemple de code serait reçu avec gratitude ...

Cordialement, Andrew.

+1

Je n'utiliserais vraiment pas ce document. Allez pour [Hpricot] (http://wiki.github.com/hpricot/hpricot) ou [Nokogiri] (http://nokogiri.org) –

Répondre

4

Allez-y et prenez le plongeon ActiveRecord, voici quelques-uns des premiers pas pour la base de données java embarquée h2.

Je pense que vous avez besoin de ces pierres précieuses

jruby -S gem install active_record 
jruby -S gem install active_record_jdbc_adapter 
jruby -S gem install active_record_jdbch2_adapter 
jruby -S gem install jdbc_h2 

Ensuite, vous pouvez utiliser ce dossier actif comme

require 'active_record' 
require 'logger' 

my_logger = Logger.new(STDOUT) 
my_logger.level = Logger::DEBUG 
ActiveRecord::Base.logger = my_logger 

ActiveRecord::Base.establish_connection(
    :adapter => 'jdbch2', 
    :database => "my_database_file",  # set to anything you want first run 
    :username => "my_username",    # set to anything you want first run 
    :password => "my_secret_password"  # set to anything you want first run 
) 

Vous aurez besoin d'avoir des tables à insérer dans. En respectant la convention ActiveRecord, gérez un dossier de modifications de schéma de base de données séquencées, puis pointez le migrateur vers ce dossier. Par exemple créez le dossier "migrations" et le fichier suivant "20090815230000_create_my_models.rb". Assurez-vous que le nom du fichier "snake_case" correspond au nom de la classe CamelCase. Maintenant (en retournant à votre script principal), vous pouvez pointer le migrateur Rails vers ce dossier. Le migrateur de rails stocke toutes les méta-données nécessaires pour exécuter les migrations dans l'ordre, et exécute les nouvelles dès qu'elles sont disponibles.

ActiveRecord::Migration.verbose = true 
ActiveRecord::Migrator.migrate("migrations") 

Une fois que vous avez créé vos tables, vous pouvez utiliser ActiveRecord comme normal

class MyModel < ActiveRecord::Base 
end 

Maintenant, vous pouvez insérer des choses dans la base de données.

x=MyModel.new 
x.foo="bar" 
x.save! 

J'espère que cela aide. Si ActiveRecord est trop pénible pour travailler, Sequel est léger et amusant.

+0

cool, même chose pour mysql, juste installer gem jdbc-mysql, et dans la section du pilote mis jdbcmysql – khelll

Questions connexes