Includere librerie esterne in Rails (was: Re: [ruby-it] Invio di un file (http) con Ruby)

Ashkey ashkey80 a gmail.com
Sab 24 Feb 2007 15:58:52 CET


Scusatemi la banalità della domanda, ma non mi è ancora del tutto
chiaro quale sia il metodo corretto per utilizzare una gemma in un
progetto Rails.

Ho fatto diverse ricerche online, e nella maggior parte dei siti si
suggerisce l'accoppiata
require 'rubygems'
require_gem 'gemma'

ma finora non c'è stata una volta che sia funzionato come avrebbe
dovuto... (ho provato con simple-rss, feedtools, curb e qualche
altra).
L'unico modo per far si che le gemme funzionino a dovere è copiarne i
files in /lib nel mio progetto rails, ma trovo poco logico dover far
così, almeno per le gemme che spesso richiedono la compilazione per il
sistema in cui le si usa.

Altre gemme di sistema (come Rails stesso o Mysql) funzionano perfettamente.

La cosa più ovvia che mi viene in mente è che queste ultime siano
state pensate per essere usate con rails, mentre altre gemme nascono
come librerie generiche per ruby e nell'environment di Rails i
percorsi non si riescano a risolvere correttamente...

Il 21/02/07, Ashkey<ashkey80 a gmail.com> ha scritto:
> Risolto... è stato sufficente copiare i files di Curb (i files curb.rb
> ed il compilato curb_core.bundle) nella cartella /lib della mia
> applicazione. In pratica lasciando tutto nel percorso standard di gems
> caricava il primo (che creava il modulo, quindi non avevo il
> NameError) ma non trovava il bundle...
>
> Ora funziona perfettamente, e scaricare un file è veramente facile:
>
> Curl::Easy.download('http://www.rubi-lang.org',
> '/Users/julespiccotti/Desktop/ruby_index.html')
>
> mentre per fare il post http di un file è stato sufficente questo script:
>
>     c = Curl::Easy.new
>     c.url = 'http://mediaingestion.dv-lnx.esperia.com/upload.php'
>     c.multipart_form_post = true
>     c.http_post(Curl::PostField.file('Filedata',
> '/Users/julespiccotti/file.zip'))
>     @body = c.body_str
>     @headers = c.headers_str
>     @http_code = c.response_code
>
> Mitico!
>
> Jules Piccotti
>
>
> Il 20/02/07, Ashkey<ashkey80 a gmail.com> ha scritto:
> > Ciò che mi lascia perplesso è che non ho un NameError (che ottengo se
> > tolgo il require dal controller), quindi la libreria viene caricata...
> > ma qualcosa non va' come dovrebbe, dato che non vede i metodi.
> >
> > Mi cheido quale sia la causa...
> >
> > J
> >
> > Il 20/02/07, Ashkey<ashkey80 a gmail.com> ha scritto:
> > > Sono riuscito a farlo funzionare dalla console, ed è una figata.
> > > Riesco ad eseguire post, get, e molte altre operazioni http senza
> > > problemi.
> > >
> > > A questo indirizzo le istruzioni: http://curb.rubyforge.org/files/README.html
> > >
> > > Se lo uso in un controller Rails invece sembra darmi qualche
> > > problema... Ecco il codice incriminato:
> > >
> > > require 'curb'
> > >
> > > class CurlController < ApplicationController
> > >   def test
> > >    c = Curl::Easy.perform("http://www.google.co.uk")
> > >    @res = c.body_str
> > >   end
> > >  end
> > >
> > > Mi da l'ormai odiata eccezione:
> > >  NoMethodError in VideosController#upload
> > > undefined method `perform' for Curl::Easy:Class
> > >
> > > Dalla console invece:
> > >
> > > >> require 'curb'
> > > => []
> > > >> c = Curl::Easy.perform("http://www.google.co.uk")
> > > => #<Curl::Easy:0x33684ec>
> > > >> c.body_str
> > > => "<html><head><meta http-equiv=\"conten............
> > >
> > > Cosa può essere?
> > >
> > >
> > >
> > > Il 20/02/07, david<david.palm a iperbole.bologna.it> ha scritto:
> > > >
> > > > >
> > > > > E' ciò che stavo valutando ma ho trovato di meglio:
> > > > >
> > > > > http://curb.rubyforge.org/
> > > > >
> > > > > gem install curb :-)
> > > > >
> > > > > Ora ci gioco un po' e vi faccio sapere...
> > > > >
> > > > He he... avrai risolto allora!
> > > >
> > > > :-)
> > > >
> > > > --
> > > > "Ce qui compte, ce n'est pas le bonheur de tout le monde, c'est le bonheur de chacun." - Boris Vian
> > > >
> > > > _______________________________________________
> > > > Ml mailing list
> > > > Ml a lists.ruby-it.org
> > > > http://lists.ruby-it.org/mailman/listinfo/ml
> > > >
> > >
> > >
> > > --
> > > Ashkey < Jules Piccotti
> > >
> >
> >
> > --
> > Ashkey < Jules Piccotti
> >
>


-- 
Ashkey < Jules Piccotti


Maggiori informazioni sulla lista Ml